#! /usr/bin/perl -w

my $oldsvn = 0; # before 1.7
my $maxlength = 0;
my @names = glob "*.jar";

foreach my $plugin (@names)
{
  my $l = length($plugin);
  $maxlength = $l if $l > $maxlength;
}

system "svn -q export -r BASE . getrev" if !$oldsvn;
foreach my $plugin (@names)
{
  next if $plugin =~ /-(javadoc|sources)\.jar$/;
  my $date = "";
  my $version = "";
  my $mversion = "";
  my $manifest = `unzip -c $plugin META-INF/MANIFEST.MF`;
  if($manifest)
  {
    $date = $1 if $manifest =~ /Plugin-Date: ([^\r\n]+)/;
    $version = $1 if $manifest =~ /Plugin-Version: ([^\r\n]+)/;
    $mversion = $1 if $manifest =~ /Plugin-Mainversion: ([^\r\n]+)/;
  }
  printf "%-${maxlength}s %28s %10s (%5s)", $plugin,$date,$version,$mversion;
  my $svnfile = $oldsvn ? ".svn/text-base/$plugin.svn-base" : "getrev/$plugin";
  if(-f $svnfile && ($manifest = `unzip -c $svnfile META-INF/MANIFEST.MF`))
  {
    my $svndate = "";
    my $svnversion = "";
    my $svnmversion = "";
    $svndate = $1 if $manifest =~ /Plugin-Date: ([^\r\n]+)/;
    $svnversion = $1 if $manifest =~ /Plugin-Version: ([^\r\n]+)/;
    $svnmversion = $1 if $manifest =~ /Plugin-Mainversion: ([^\r\n]+)/;
    my $changed = ($svndate ne $date || $svnversion ne $version);
    my $changedm = $svnmversion ne $mversion;
    printf " SVN: %28s %10s (%5s)%s%s", $svndate,$svnversion,$svnmversion,
    $changed ? " changed" : "", $changedm ? " main" : "";
    `svn revert $plugin` if !$changed && !$changedm;
  }
  printf "\n";
}
system "rm -rf getrev" if !$oldsvn;
