#!perl
# Copy resource files to new instance.
#


BEGIN {
    $| = 1;
    $isNT = -d '\\';

    # global variables
    $useHTML = 0;
    $rootDir = 0;
    $instDir = 0;

    sub printError {
        my $msg = shift;

        if ($useHTML) {
            print "<FONT COLOR=\"red\">[Error]</FONT> $msg\n";
        } else {
            print $msg;
        }
        exit(1);
    }

    sub printUsage {

        print "Usage:  perl installResources -r <rootDir> [-i instance] [-w]\n\n";
        print "Where:  -r = root directory\n";
        print "        -i = name of instance to upgrade\n";
        print "        -w = output HTML\n";
        print "\n";
        exit(0);
    }


    # parse arguments
    if ($#ARGV < 0) {
        printUsage();
    }
    my $argc = 0;
    while ($argc <= $#ARGV) {
        if ($ARGV[$argc] eq "-r") {
            $argc++;
            if ($argc > $#ARGV) {
                printUsage();
            }
            $rootDir = $ARGV[$argc++];
            $rootDir =~ s/\\/\//g if $isNT;
            if (substr($rootDir, length($rootDir)-1, length($rootDir)) eq "/") {
                chop($rootDir);
            }
            if (!(-d $rootDir)) {
                printError("No such directory: $rootDir\n");
            }
        } elsif ($ARGV[$argc] eq "-i") {
            $argc++;
            if ($argc > $#ARGV) {
                printUsage();
            }
            $instDir = $ARGV[$argc++];
            $instDir =~ s/\\/\//g if $isNT;
            if (substr($instDir, length($instDir)-1, length($instDir)) eq "/") {
                chop($instDir);
            }
            if (!(-d "$rootDir/$instDir")) {
                printError("No such directory: $rootDir/$instDir\n");
            }
        } elsif ($ARGV[$argc] eq "-w") {
            $useHTML = 1;
            $argc++;
        } else {
            printUsage();
        }
    }
    # set include line
    @INC = ( "$rootDir/bin/https/perl" );
}
use BinUtil;
use Magnus;

# unless an instance is specified,
# deal with every existing instance
if ($instDir) {
    installResources($instDir);
} else {
    my $dirEntry;
    local *ROOTDIR;

    opendir(ROOTDIR, "$rootDir") or printError("Cannot open $rootDir: $!\n");
    while ($dirEntry = readdir(ROOTDIR)) {
        if ($dirEntry =~ /^https-/) {
            installResources($dirEntry);
        }
    }
    closedir(ROOTDIR);
}

exit(0);



sub installResources {
    my $dir = shift;

    if ($isNT) {
      BinUtil::copyDir("$rootDir/bin/https/res", "$rootDir/$dir/config", "res");
    } else {
        symlink("$rootDir/bin/https/res", "$rootDir/$dir/config/res");
    }
}
