Fix issue where existing symlink is not updated
[exim-website.git] / script / gen.pl
index d086fd38551e9f6e03d2c9a131e3777e655d2413..82ab22440136ed48791b1c5454fec24e2469ffed 100755 (executable)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use CSS::Minifier::XS;
+use CSS::Minifier::XS 0.07;
 use File::Copy;
 use File::Find;
 use File::Slurp;
@@ -26,7 +26,9 @@ do_web() if exists $opt{web};
 
 ## Add the exim-html-current symlink
 print "Symlinking exim-html-current to exim-html-$opt{latest}\n";
-symlink( "$opt{docroot}/exim-html-$opt{latest}", "$opt{docroot}/exim-html-current" );
+unlink("$opt{docroot}/exim-html-current") if ( -l "$opt{docroot}/exim-html-current" );
+symlink( "$opt{docroot}/exim-html-$opt{latest}", "$opt{docroot}/exim-html-current" )
+  || die "symlink to $opt{docroot}/exim-html-current failed";
 
 ## Generate the website files
 sub do_web {
@@ -313,7 +315,7 @@ sub transform {
     mkdirp( ( $out_path =~ /^(.+)\/.+$/ )[0] );
 
     ## Write out the document
-    open my $out, '>', $out_path or die $!;
+    open my $out, '>', $out_path or die "Unable to write $out_path - $!";
     print $out $stylesheet->output_as_bytes($doc);
     close $out;
 }
@@ -369,7 +371,7 @@ sub parse_arguments {
     error_help('Excess arguments') if ( scalar(@ARGV) );
 
     error_help('Must include at least one of --web, --spec or --filter')
-      unless ( defined $opt{web} || scalar( @{ $opt{spec} } ) || scalar( @{ $opt{web} } ) );
+      unless ( $opt{web} || scalar( @{ $opt{spec} || [] } ) || scalar( @{ $opt{filter} || [] } ) );
 
     return %opt;
 }