From: David Mitchell Date: Fri, 3 Jul 2009 20:31:15 +0000 (+0100) Subject: add -x option to Porting/cmpVERSION.pl X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2fb8ff88df68d4456db591e74fa6d6cb7c777e3c;p=p5sagit%2Fp5-mst-13.2.git add -x option to Porting/cmpVERSION.pl which ignores dual-life modules --- diff --git a/Porting/cmpVERSION.pl b/Porting/cmpVERSION.pl index 0f808c8..9205e28 100644 --- a/Porting/cmpVERSION.pl +++ b/Porting/cmpVERSION.pl @@ -4,7 +4,10 @@ # cmpVERSION - compare two Perl source trees for modules # that have identical version numbers but different contents. # -# withg -d option, output the diffs too +# with -d option, output the diffs too +# with -x option, exclude dual-life modules (after all, there are tools +# like core-cpan-diff that can already deal with them) +# With this option, one od the directories must be '.'. # # Original by slaven@rezic.de, modified by jhi. # @@ -17,14 +20,17 @@ use File::Find; use File::Spec::Functions qw(rel2abs abs2rel catfile catdir curdir); use Getopt::Std; +use lib 'Porting'; +use Maintainers; + sub usage { die <<'EOF'; -usage: $0 [ -d ] source_dir1 source_dir2 +usage: $0 [ -d -x ] source_dir1 source_dir2 EOF } my %opts; -getopts('d', \%opts) or usage; +getopts('dx', \%opts) or usage; @ARGV == 2 or usage; for (@ARGV[0, 1]) { @@ -32,6 +38,18 @@ for (@ARGV[0, 1]) { unless -f catfile($_, "perl.h") && -d catdir($_, "Porting"); } +my %dual_files; +if ($opts{x}) { + die "With -x, one of the directories must be '.'\n" + unless $ARGV[0] eq '.' or $ARGV[1] eq '.'; + for my $m (grep $Maintainers::Modules{$_}{CPAN}, + keys %Maintainers::Modules) + { + + $dual_files{"./$_"} = 1 for Maintainers::get_module_files($m); + } +} + my $dir2 = rel2abs($ARGV[1]); chdir $ARGV[0] or die "$0: chdir '$ARGV[0]' failed: $!\n"; @@ -50,7 +68,8 @@ my @diffs; find( sub { /\.pm$/ && $File::Find::dir !~ $skip_dirs && - ! exists $skip{$File::Find::name} + ! exists $skip{$File::Find::name} && + ! exists $dual_files{$File::Find::name} && do { my $file2 = catfile(catdir($dir2, $File::Find::dir), $_);