Line 0
Link Here
|
0 |
- |
1 |
#!/usr/bin/perl |
|
|
2 |
|
3 |
use Modern::Perl; |
4 |
|
5 |
use File::Slurp qw( read_file write_file ); |
6 |
|
7 |
my @files = @ARGV; |
8 |
my $i; |
9 |
my $total = scalar @files; |
10 |
my $num_width = length $total; |
11 |
for my $file ( @files ) { |
12 |
print sprintf "|%-25s| %${num_width}s / %s (%.2f%%)\r", |
13 |
'=' x (24*$i++/$total). '>', |
14 |
$i, $total, 100*$i/+$total; |
15 |
flush STDOUT; |
16 |
|
17 |
my $content = read_file( $file ); |
18 |
my ( $no_export_modules, $modules_used, $package_name ); |
19 |
for my $line ( split "\n", $content ) { |
20 |
if ( $line =~ m{^package C4::(.*);} ) { |
21 |
$package_name = $1; |
22 |
next; |
23 |
} elsif ( $line =~ m{^use C4::([^\s]*);$} ) { |
24 |
next; |
25 |
} elsif ( $line =~ m{C4::([^\s\(\)-]*)} ) { |
26 |
my $module = $1; |
27 |
my $namespace_module = "C4::${module}::"; |
28 |
if ( $line =~ m[$namespace_module] ) { |
29 |
my @parts = split '::', $module; |
30 |
pop @parts if @parts > 1; |
31 |
$module = join '::', @parts; |
32 |
} |
33 |
$modules_used->{$module}++; |
34 |
} |
35 |
} |
36 |
|
37 |
my $new_content; |
38 |
for my $line ( split "\n", $content ) { |
39 |
if ( $line =~ m{^use C4::([^\s]*);$} ) { |
40 |
next |
41 |
if (!$package_name || $package_name ne $1) |
42 |
&& !exists $modules_used->{$1}; |
43 |
} |
44 |
$new_content .= "$line\n"; |
45 |
} |
46 |
if ( $content ne $new_content ) { |
47 |
say "$file -- Modified"; |
48 |
write_file($file, $new_content); |
49 |
} |
50 |
} |