windows-nt/Source/XPSP1/NT/admin/admt/buildtools/fetchprojects.pl
2020-09-26 16:20:57 +08:00

75 lines
2.1 KiB
Perl

$SSDIR = "C:\\Progra~1\\Micros~3\\Common\\VSS";
$SSCMD = "$SSDIR\\Win32\\ss";
$SSOPTIONS = "-I-N";
while ($_ = $ARGV[0], /^-/) {
shift;
last if /^--$/;
/^-s(.*)/i && ($ssdb = $1);
/^-d(.*)/i && ($targetroot = $1);
/^-f(.*)/i && ($projectfile = $1);
/^-p(.*)/i && ($platformfilter = $1);
}
($targetroot && $projectfile) || die "Usage: FetchProjects.pl [-S<SourceSafe Database>] -D<target root dir> -F<project ini file> [-P<platform filter>]\n";
open (FILE, $projectfile) || die "Error opening $projectfile!\n";
while (<FILE>) {
/^\[(.*)\]/ && ($projectname = $1);
if ( $projectname ) {
/^Directory=(.*)/i && ($directory{$projectname} = $1);
/^Platform=(.*)/i && ($platform{$projectname} = $1);
/^Recursive=(.*)/i && ($recursive{$projectname} = $1);
}
}
close FILE;
$ssfile = "$SSDIR\\srcsafe.ini";
if ( $ssdb ) {
rename ("$ssfile", "$ssfile.bak") || die "Error renaming $ssfile to $ssfile.bak: $!.\n";
open (OUTFILE, ">$ssfile") || die "Error opening file $ssfile: $!.\n";
print OUTFILE "#include $ssdb\\srcsafe.ini\n";
close OUTFILE;
print "Using $ssdb\n";
}
else {
open (INFILE, "$ssfile") || die "Error opening $ssfile: $!.\n";
while (<INFILE>) {
/^#include (.*)\\srcsafe.ini/ && (print "Using $1\n");
}
close INFILE;
}
if ( ! -d $targetroot ) {
system "md \"$targetroot\"";
print "Created directory $targetroot\n";
}
foreach $project (sort keys %directory) {
if ( !$platformfilter || ($platform{$project} =~ /$platformfilter/i) ) {
print "\nGetting project $project...\n";
$targetdir = "$targetroot\\$directory{$project}";
if ( ! -d $targetdir ) {
system "md \"$targetdir\"";
print "Created directory $targetdir\n";
}
if ( $recursive{$project} eq "No" ) {
$command = "$SSCMD get \"$project\" $SSOPTIONS \"-GL$targetdir\"";
}
else {
$command = "$SSCMD get \"$project\" -R $SSOPTIONS \"-GL$targetdir\"";
}
print "$command\n";
system "$command";
}
}
if ( $ssdb ) {
rename ("$ssfile.bak", "$ssfile") || die "Error renaming $ssfile.bak to $ssfile: $!.\n";
}
exit 0;