]> git.donarmstrong.com Git - deb_pkgs/scowl.git/blob - src/cmp-final
fix numbering of variants to be 1 and 2 (closes: #867586)
[deb_pkgs/scowl.git] / src / cmp-final
1 #!/usr/bin/perl
2
3 # Utility to compare two final/ directories for changes.
4
5 use Cwd;
6 use strict;
7 use warnings;
8
9 my $max_size = 99;
10 if (@ARGV == 3) {
11     $max_size = shift @ARGV;
12 } elsif (@ARGV != 2) {
13     print "Usage: cmp-final [<max size>] <orig final dir> <new dir>\n";
14     exit 1;
15 }
16
17 my $orig = $ARGV[0];
18 my $new  = $ARGV[1];
19
20 my $wd = cwd();
21
22 my %track;
23 sub slurp ($$) {
24     my ($dir,$idx) = @_;
25     chdir $wd  or die;
26     chdir $dir or die;
27     foreach my $l (sort <*>) {
28         $l =~ /^.+\.(\d\d)$/ or die;
29         next if $1 > $max_size;
30         open F, $l or die;
31         foreach my $word (<F>) {
32             chomp $word;
33             $track{$word}{$l} = exists $track{$word}{$l} ? $track{$word}{$l}.$idx : $idx;
34         }
35     }
36 }
37
38 slurp($orig, 0);
39 slurp($new,  1);
40
41 foreach my $w (sort keys %track) {
42     my $diff = 0;
43     my $line = "$w: ";
44     foreach my $l (sort keys %{$track{$w}}) {
45         my $which = $track{$w}{$l};
46         if ($which eq '0') {
47             $diff = 1;
48             $line .= "-$l- ";
49         } elsif ($which eq '1') {
50             $diff = 1;
51             $line .= "+$l+ ";
52         } elsif ($which eq '01') {
53             $line .= "$l ";
54         } else {
55             die;
56         }
57     }
58     print "$line\n" if $diff;
59 }