#!/usr/bin/perl

my ($l1, $l2, @diffargs);
@diffargs = ();

foreach my $arg (@ARGV) {
  if ($arg =~ /^-/) {
    push @diffargs, $arg;
  } elsif (defined $l1) {
    $l2 = $arg;
  } else {
    $l1 = $arg;
  }
}

my $tmp1 = "/tmp/logdiff.$$.1";
my $tmp2 = "/tmp/logdiff.$$.2";
fixfile($l1, $tmp1);
fixfile($l2, $tmp2);

system "diff", @diffargs, $tmp1, $tmp2;
unlink($tmp1);
unlink($tmp2);
exit;

sub fixfile {
  my $inf = shift;
  my $outf = shift;
  die "cannot find $inf" unless -f $inf;
  open (IN, "-|", "sort \"$inf\"") or die "cannot open $inf";
  open (OUT, ">$outf") or die "cannot open $outf";
  while (<IN>) {
    if (!/^([\.Y]\s+\S+\s+\S+)\s+(\S+)\s+(.+)/) {
      print OUT;
      next;
    }

    my ($scorepath, $rules, $meta) = ($1,$2,$3);
    my @rules = split(/,/, $rules);
    @rules = sort grep {
        $_ !~ /^AWL$/
    } @rules;
    $rules = join(',', @rules);

    $meta =~ s/\bscantime=\d+/scantime=N/gs;     # frequently different

    print OUT "$scorepath $rules $meta\n";
  }
  close IN;
  close OUT;
}

