diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2003-03-06 07:48:05 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2003-03-06 07:48:05 +0000 |
commit | 93209f3997221ac28a3ff713e663b011e06679f1 (patch) | |
tree | 654785530d03da09c67f3773985c190b9dfa83d9 /Porting | |
parent | 88fdc17263c0ecab1cbcf87b39127c6497fe4a5e (diff) | |
download | perl-93209f3997221ac28a3ff713e663b011e06679f1.tar.gz |
Add mani(fest) check(ing) utility.
p4raw-id: //depot/perl@18835
Diffstat (limited to 'Porting')
-rw-r--r-- | Porting/manicheck | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Porting/manicheck b/Porting/manicheck new file mode 100644 index 0000000000..20125d8cf8 --- /dev/null +++ b/Porting/manicheck @@ -0,0 +1,75 @@ +#!/usr/bin/perl -ws + +# +# manicheck - check files against the MANIFEST +# +# Without options prints out (possibly) two lines: +# +# extra: a b c +# missing: d +# +# With option -x prints out only the missing files (and without the "extra: ") +# With option -m prints out only the extra files (and without the "missing: ") +# + +BEGIN { + $SIG{__WARN__} = sub { + help() if $_[0] =~ /"main::\w" used only once: possible typo at /; + }; +} + +use strict; + +sub help { + die <<EOF; +$0: Usage: $0 [-x|-m|-h] +-x show only the extra files +-m show only the missing files +-h show only this help +EOF +} + +use vars qw($x $m $h); + +help() if $h; + +open(MANIFEST, "MANIFEST") or die "MANIFEST: $!"; + +my %mani; + +while (<MANIFEST>) { + if (/^(\S+)\t+(.+)$/) { + $mani{$1}++; + } else { + warn "MANIFEST:$.:$_"; + } +} + +close(MANIFEST); + +my %find; +use File::Find; +find(sub { + if(-f $_) { + my $f = $File::Find::name; + $f =~ s:^\./::; + $find{$f}++; + } + }, '.' ); + +my @xtra; +my @miss; + +for (sort keys %find) { + push @xtra, $_ unless $mani{$_}; +} + +for (sort keys %mani) { + push @miss, $_ unless $find{$_}; +} + +printf("%s@xtra\n", $x || $m ? "" : "extra: ") if @xtra && !$m; +printf("%s@miss\n", $x || $m ? "" : "missing: ") if @miss && !$x; + +exit 0; + |