6625113: Add the normalize and rmkw perl script to the openjdk repository or openjdk site?
Reviewed-by: darcy
This commit is contained in:
parent
abf322bf84
commit
dc71b40a5f
208
make/scripts/normalizer.pl
Normal file
208
make/scripts/normalizer.pl
Normal file
@ -0,0 +1,208 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
#
|
||||
# Parses java files:
|
||||
# 1. Removes from the end of lines spaces and TABs
|
||||
# 2. Replaces TABs by spaces
|
||||
# 3. Replaces all NewLine separators by Unix NewLine separators
|
||||
# 4. Makes one and only one empty line at the end of each file
|
||||
|
||||
if ($#ARGV < 0) {
|
||||
&usage;
|
||||
|
||||
die;
|
||||
}
|
||||
|
||||
use Cwd 'abs_path';
|
||||
|
||||
my @extensions = ("java");
|
||||
|
||||
# Read options
|
||||
my $dirpos = 0;
|
||||
|
||||
while ($dirpos < $#ARGV) {
|
||||
if ($ARGV[$dirpos] eq "-e") {
|
||||
@extensions = split(/,/, $ARGV[$dirpos + 1]);
|
||||
} else {
|
||||
last;
|
||||
}
|
||||
|
||||
$dirpos += 2;
|
||||
}
|
||||
|
||||
if ($dirpos > $#ARGV) {
|
||||
&usage;
|
||||
|
||||
die;
|
||||
}
|
||||
|
||||
use Cwd;
|
||||
my $currdir = getcwd;
|
||||
|
||||
my $allfiles = 0;
|
||||
|
||||
my $filecount = 0;
|
||||
|
||||
my @tabvalues;
|
||||
|
||||
# Init tabvalues
|
||||
push (@tabvalues, " ");
|
||||
|
||||
for (my $i = 1; $i < 8; $i++) {
|
||||
push(@tabvalues, $tabvalues[$i - 1] . " ");
|
||||
}
|
||||
|
||||
open(FILELIST, ">$currdir/filelist") or die "Failed while open $currdir/filelist: $!\n";
|
||||
|
||||
while ($dirpos <= $#ARGV) {
|
||||
use File::Find;
|
||||
|
||||
find(\&parse_file, abs_path($ARGV[$dirpos]));
|
||||
|
||||
$dirpos += 1;
|
||||
}
|
||||
|
||||
close(FILELIST);
|
||||
|
||||
use Cwd 'chdir';
|
||||
chdir $currdir;
|
||||
|
||||
print "Checked $allfiles file(s)\n";
|
||||
print "Modified $filecount file(s)\n";
|
||||
print "See results in the file $currdir/filelist\n";
|
||||
|
||||
sub parse_file {
|
||||
my $filename = $File::Find::name;
|
||||
|
||||
# Skip directories
|
||||
return if -d;
|
||||
|
||||
# Skip SCCS files
|
||||
return if ($filename =~ /\/SCCS\//);
|
||||
|
||||
# Skip files with invalid extensions
|
||||
my $accepted = 0;
|
||||
foreach my $ext (@extensions) {
|
||||
if ($_ =~ /\.$ext$/i) {
|
||||
$accepted = 1;
|
||||
|
||||
last;
|
||||
}
|
||||
}
|
||||
return if ($accepted == 0);
|
||||
|
||||
use File::Basename;
|
||||
my $dirname = dirname($filename);
|
||||
|
||||
use Cwd 'chdir';
|
||||
chdir $dirname;
|
||||
|
||||
open(FILE, $filename) or die "Failed while open $filename: $!\n";
|
||||
|
||||
# Read file
|
||||
my @content;
|
||||
my $line;
|
||||
my $emptylinescount = 0;
|
||||
my $modified = 0;
|
||||
|
||||
while ($line = <FILE>) {
|
||||
my $originalline = $line;
|
||||
|
||||
# Process line
|
||||
|
||||
# Remove from the end of the line spaces and return character
|
||||
while ($line =~ /\s$/) {
|
||||
chop($line);
|
||||
}
|
||||
|
||||
# Replace TABs
|
||||
for (my $i = 0; $i < length($line); $i++) {
|
||||
if (substr($line, $i, 1) =~ /\t/) {
|
||||
$line = substr($line, 0, $i) . $tabvalues[7 - ($i % 8)] . substr($line, $i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (length($line) == 0) {
|
||||
$emptylinescount++;
|
||||
} else {
|
||||
while ($emptylinescount > 0) {
|
||||
push(@content, "");
|
||||
|
||||
$emptylinescount--;
|
||||
}
|
||||
|
||||
push(@content, $line);
|
||||
}
|
||||
|
||||
if ($originalline ne ($line . "\n")) {
|
||||
$modified = 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$allfiles++;
|
||||
|
||||
if ($emptylinescount > 0) {
|
||||
$modified = 1;
|
||||
}
|
||||
|
||||
close(FILE);
|
||||
|
||||
if ($modified != 0) {
|
||||
# Write file
|
||||
open(FILE, ">$filename") or die "Failed while open $filename: $!\n";
|
||||
|
||||
for (my $i = 0; $i <= $#content; $i++) {
|
||||
print FILE "$content[$i]\n";
|
||||
}
|
||||
|
||||
close(FILE);
|
||||
|
||||
# Print name from current dir
|
||||
if (index($filename, $currdir) == 0) {
|
||||
print FILELIST substr($filename, length($currdir) + 1);
|
||||
} else {
|
||||
print FILELIST $filename;
|
||||
}
|
||||
print FILELIST "\n";
|
||||
|
||||
$filecount++;
|
||||
|
||||
print "$filename: modified\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub usage {
|
||||
print "Usage:\n";
|
||||
print " normalizer.pl [-options] <dir> [dir2 dir3 ...]\n";
|
||||
print " Available options:\n";
|
||||
print " -e comma separated files extensions. By default accepts only java files\n";
|
||||
print "\n";
|
||||
print "Examples:\n";
|
||||
print " normalizer.pl -e c,cpp,h,hpp .\n";
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user