You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
1.7 KiB
103 lines
1.7 KiB
use strict; |
|
|
|
my $forceBuild = 0; |
|
if ( $ARGV[1] =~ /-forcebuild/ ) |
|
{ |
|
$forceBuild = 1; |
|
} |
|
|
|
# Read in the list of changed maps |
|
|
|
my $filename = "buildlist.txt"; |
|
|
|
open(INFILE, $filename); |
|
my @maps = <INFILE>; |
|
close( INFILE ); |
|
|
|
# forcelist.txt allows maps to be manually added to the build. |
|
|
|
open(INFILE, "forcelist.txt"); |
|
my @forcemaps = <INFILE>; |
|
close( INFILE ); |
|
|
|
my $retval = 1; |
|
|
|
system( "echo. > $filename" ); |
|
system( "echo. > forcelist.txt" ); |
|
|
|
# Run through the list of maps to see if any should be built |
|
|
|
for( @maps) |
|
{ |
|
if( /updating (.*)|adding (.*)/ ) |
|
{ |
|
# Check if this map should be built now |
|
if ( shouldBuild( $1 ) == 0 ) |
|
{ |
|
next; |
|
} |
|
|
|
# Add this map name to the build list |
|
|
|
system( "p4 sync -f $1 >> $filename" ); |
|
system( "echo Adding to the build list: $1 >> log.txt" ); |
|
$retval = 0; |
|
} |
|
} |
|
|
|
for( @forcemaps ) |
|
{ |
|
if ( /\.vmf/ ) |
|
{ |
|
# Add this map name to the build list |
|
|
|
$_ =~ /(.*)/; |
|
system( "p4 sync -f $1 >> $filename" ); |
|
system( "echo Forcing add to the build list: $1 >> log.txt" ); |
|
$retval = 0; |
|
} |
|
} |
|
|
|
exit $retval; |
|
|
|
#----------------------------------- |
|
# Check if this map should build now |
|
#----------------------------------- |
|
sub shouldBuild |
|
{ |
|
my $map = shift; |
|
|
|
# if command line flag was set, build the map |
|
|
|
if ( $forceBuild == 1 ) |
|
{ |
|
return 1; |
|
} |
|
|
|
# if the map line contains the force flag, build the map |
|
|
|
if ( $map =~ /-forcebuild/ ) |
|
{ |
|
return 1; |
|
} |
|
|
|
# Dump the comments from the last checkin of this map |
|
|
|
system( "p4 changes -m 1 -s submitted -l $map > comments.txt" ); |
|
|
|
# parse comments for the autocompile keyword |
|
|
|
open(INFILE, "comments.txt"); |
|
my @comments = <INFILE>; |
|
close(INFILE); |
|
|
|
for( @comments ) |
|
{ |
|
if ( /autocompile/i ) |
|
{ |
|
return 1; |
|
} |
|
} |
|
|
|
return 0; |
|
}
|
|
|