From 5aec867b2fae0ff039d0ca4228ccceadecf316c9 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 14 Jul 2013 12:04:52 -0400
Subject: [PATCH] Added release script template and build.xml adjustments

---
 build.xml |   49 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/build.xml b/build.xml
index ee4542c..713578f 100644
--- a/build.xml
+++ b/build.xml
@@ -806,7 +806,7 @@
 		Update the gh-pages branch with the current site
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="updateGhPages" depends="buildSite">
+	<target name="updateGhPages">
 		<!-- Build gh-pages branch -->
 		<mx:ghpages repositorydir="${basedir}" obliterate="true" />
 	</target>
@@ -817,7 +817,7 @@
 		Publish binaries to Google Code
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="publishBinaries" depends="clean,buildGO,buildWAR,buildExpress,buildFederationClient,buildManager,buildApiLibrary" description="Publish the Gitblit binaries to Google Code">
+	<target name="publishBinaries" description="Publish the Gitblit binaries to Google Code">
 
 		<echo>Uploading Gitblit ${project.version} binaries</echo>
 
@@ -869,32 +869,23 @@
 	<!--
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 		Publish site to site hosting service
-		You must add ext/commons-net-1.4.0.jar to your ANT classpath.
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 	-->
-	<target name="publishSite" depends="clean,buildSite,updateGhPages" description="Publish the Gitblit site to a webserver (requires ext/commons-net-1.4.0.jar)" >
+	<target name="publishSite" depends="clean,buildSite,updateGhPages" description="Publish the Gitblit site to a host" >
 
 		<echo>Uploading Gitblit ${project.version} website</echo>
 
-		<ftp server="${ftp.server}"
+		<mx:ftp server="${ftp.server}"
 			userid="${ftp.user}"
 			password="${ftp.password}"
 			remotedir="${ftp.dir}"
 			passive="true"
 			verbose="yes">
 			<fileset dir="${project.siteTargetDirectory}" />
-		</ftp>
+		</mx:ftp>
 	</target>
 
 
-	<!--
-		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-		Compile from source, publish binaries, and build & deploy site
-		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-	-->
-	<target name="publishAll" depends="publishBinaries,publishSite" />
-
-	
 	<!--
 		~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 		Tag a new version and prepare for the next development cycle.
@@ -904,19 +895,45 @@
 		<!-- release -->
 		<property name="dryrun" value="false" />
 		<mx:version stage="release" dryrun="${dryrun}" />		
+		<property name="project.tag" value="v${project.version}" />
 		<!-- commit build.moxie & releases.moxie (automatic) -->
 		<mx:commit showtitle="no">
 		    <message>Prepare ${project.version} release</message>
-			<tag name="v${project.version}">
+			<tag name="${project.tag}">
 				<message>${project.name} ${project.version} release</message>
 			</tag>
 		</mx:commit>
+
+		<!-- create the release process script -->
+		<mx:if>
+			<os family="windows" />
+			<then>
+				<!-- Windows PowerShell script        -->
+				<!-- set-executionpolicy remotesigned -->
+				<property name="recipe" value="release_${project.version}.ps1" />
+			</then>
+			<else>
+				<!-- Bash script -->
+				<property name="recipe" value="release_${project.version}.sh" />
+			</else>
+		</mx:if>
+		<delete file="${recipe}" failonerror="false" quiet="true" verbose="false" />
+		<!-- Work-around for lack of proper ant property substitution in copy -->
+		<property name="dollar" value="$"/>
+		<copy file="release.template" tofile="${recipe}">
+			<filterset begintoken="${dollar}{" endtoken="}">
+				<filter token="project.version" value="${project.version}" />
+				<filter token="project.commitId" value="${project.commitId}" />
+				<filter token="project.tag" value="${project.tag}" />
+			</filterset>
+		</copy>
+		<chmod file="${recipe}" perm="ugo+rx" />
 
 		<!-- next cycle -->
 		<mx:version stage="snapshot" incrementNumber="incremental" dryrun="${dryrun}" />
 		<mx:commit showtitle="no">
 		    <message>Reset build identifiers for next development cycle</message>
-		</mx:commit>
+		</mx:commit>		
 	</target>
 
 		

--
Gitblit v1.9.1