signFiles.pl   [plain text]


#!perl -w

#use strict;
use Data::Dumper;

sub signFiles {
    local ($signing, $config)   = @_;
    local $exprs    = $signing->{FilePatterns}->{value};
    local $template = $signing->{CommandTemplate}->{value};
    # Use Unix find instead of Windows find.  Save PATH so we can restore it when we're done:
    local $savedPATH= $ENV{PATH};
    $ENV{PATH}      = $config->{Config}->{unixfind}->{value}.";".$savedPATH;
    foreach $expr (split(" ", $exprs)) {            ## exprs is something like "*.exe *.dll"
        local $cmd  = "find . -iname \"$expr\"";
        local $list = `$cmd`;                       ## $list is files matching *.exe, for example.
        foreach $target (split("\n", $list)) {
            $target =~ s|/|\\|g;                    ## Flip path separators from unix-style to windows-style.
            local $template2    = $template;
            $template2          =~ s/%filename%/$target/;
            print "Info -- Signing $target\n" if ($verbose);
            !system("$template2") or die "Fatal -- Error signing $target.";
            }
        }
        $ENV{PATH} = $savedPATH;
    }

return 1;