#!perl -wl
use POSIX;
# this might have time zone issues
#die unless defined(($year,$month,$day)=@ARGV);
die unless defined($hackagepoint=shift@ARGV);
die unless defined (($year,$month,$day,$hour,$minute,$second)=$hackagepoint=~/^hackage\.haskell\.org,(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z$/);
$thresh=POSIX::mktime($second,$minute,$hour,$day,$month-1,$year-1900);
$temp=POSIX::ctime($thresh);
chomp$temp;
print STDERR "INFO thresh $hackagepoint = ",$temp;
die unless defined($hackagedir=shift@ARGV);
die unless defined($tarfile=shift@ARGV);

while(<STDIN>){
    chomp;
    @F=split;
    next unless (($fn)=$F[5] =~ m,(.*)/preferred-versions$,);
    $date=$F[3];
    $time=$F[4];
    die unless defined(($year,$month,$day)=$date =~ /^(\d+)-(\d+)-(\d+)$/);
    die unless defined(($hour,$minute)=$time =~ /^(\d+):(\d+)$/);
    $thistime=POSIX::mktime(0,$minute,$hour,$day,$month-1,$year-1900);
    if($thistime<$thresh){
	$db{$fn}++;
    } else{
	#print;
	#$temp=POSIX::ctime($thistime);
	#chomp$temp;
	#print "$date $time === ",$temp;
	if($db{$fn}){
	    print "tar xf $tarfile -C $hackagedir --occurrence=$db{$fn} $fn/preferred-versions"
	} else {
	    print "rm $hackagedir/$fn/preferred-versions";
	}
    }
}
