#!/usr/bin/perl

# refresh-smoked-synopses - rerun smartlinks.pl on currently held smokes
#                           in case synopses have changed

use strict;
use warnings;

use File::Find;

use constant {
  BASEDIR     => "/var/www/iblech/stuff/pugs-smokes/",
  SMARTLINKS  => "/var/www/iblech/stuff/pugs-util/smartlinks.pl",
  PUGS_SPEC   => "/var/www/iblech/stuff/pugs-smokes/spec",
};

chdir BASEDIR or die "Couldn't chdir into \"@{[ BASEDIR ]}\": $!\n";

my $cmd = PUGS_SPEC . '/update';
my $result = `$cmd`;
if($?) {
  die "Couldn't refresh synopses: $cmd exited with $?";
}
my @unchanged = ($result =~ m/No changes/g);
if(@unchanged == 2) {
  print "Synopses haven't changed.\n";
  exit 0;
}

foreach my $yml_file (glob "pugs-smoke-*.yml") {

  my $syn_dir = $yml_file;
  $syn_dir =~ s/\.yml$/-synopses/;

  my @t_files = ();
  my $wanted = sub {
    if(m/\.t$/) {
      push @t_files, $File::Find::name;
    }
  };
  find($wanted, "$syn_dir/t");

  system(SMARTLINKS, '--test-res', $yml_file,
                     '--out-dir', $syn_dir,
                     '--syn-dir', PUGS_SPEC,
                     '--fast',
                     @t_files)
    and warn "Couldn't update smoked synopses for $yml_file";
}

