summaryrefslogtreecommitdiff
path: root/devtools/mapbuild/syncChangedMaps.pl
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/mapbuild/syncChangedMaps.pl')
-rw-r--r--devtools/mapbuild/syncChangedMaps.pl103
1 files changed, 103 insertions, 0 deletions
diff --git a/devtools/mapbuild/syncChangedMaps.pl b/devtools/mapbuild/syncChangedMaps.pl
new file mode 100644
index 0000000..9122947
--- /dev/null
+++ b/devtools/mapbuild/syncChangedMaps.pl
@@ -0,0 +1,103 @@
+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;
+}