Add -D option.
authorP. J. McDermott <pjm@nac.net>
Sun, 22 Sep 2013 18:45:25 +0000 (14:45 -0400)
committerP. J. McDermott <pjm@nac.net>
Sun, 22 Sep 2013 18:45:25 +0000 (14:45 -0400)
src/ssic.pl

index b6876d5036ef22fe6d323c93ae656f4604f464fc..117864b81bceb95982121cecb9715bc93f10b2a4 100644 (file)
@@ -18,6 +18,7 @@ sub main
                "no_getopt_compat");
        if (not GetOptions(\%opts,
                        "o=s",
+                       "D=s%",
                        "h|help",
                        "V|version",
                )) {
@@ -41,12 +42,12 @@ sub main
                if ($#ARGV gt 0) {
                        error(4, "Cannot specify -o with multiple files\n");
                }
-               compile($ARGV[0], $opts{'o'});
+               compile($ARGV[0], $opts{'o'}, $opts{'D'});
        } else {
                for $input (@ARGV) {
                        $output = $input;
                        $output =~ s/\.[^.]+$/.html/;
-                       compile($input, $output);
+                       compile($input, $output, $opts{'D'});
                }
        }
 }
@@ -64,9 +65,10 @@ sub help
 
        usage($fh);
        print("Options:\n");
-       print("  -o <output>    Place the output into <output>\n");
-       print("  -h, --help     Display this information\n");
-       print("  -V, --version  Display compiler version information\n");
+       print("  -D <name>=<value>  Set the variable <name> to <value>\n");
+       print("  -o <output>        Place the output into <output>\n");
+       print("  -h, --help         Display this information\n");
+       print("  -V, --version      Display compiler version information\n");
 }
 
 sub version
@@ -99,10 +101,12 @@ sub error
 
 sub compile
 {
-       my ($input, $output) = @_;
+       my ($input, $output, $vars) = @_;
        my $input_fh;
        my $output_fh;
        my $ssi;
+       my $var_name;
+       my $var_value;
 
        if ($input eq $output) {
                error(4, "Input and output files are equal\n");
@@ -114,6 +118,10 @@ sub compile
        $CGI::SSI::DEBUG = 0;
        $ssi = CGI::SSI->new();
 
+       while (($var_name, $var_value) = each(%{$vars})) {
+               $ssi->set($var_name => $var_value);
+       }
+
        print($output_fh $ssi->process(<$input_fh>));
 }