Subversion Repositories DevTools

Rev

Rev 1972 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1972 jgill 1
<project name="ant-release-task">
2
 
3
	<macrodef name="ant-release">
4
 
5
		<attribute 	name="package"        
6
					default="${packagename}"
7
					description="The name of the package in release manager and dpkg_archive." />
8
 
9
		<attribute 	name="release-target" 
10
					default="-do-release"
11
					description="The target to invoke to copy the release to dpkg_archive." />
12
 
13
		<attribute 	name="version"
14
					default="${packageversion}"
15
					description="The version of the package in release manager and dpkg_archive." />
16
 
17
		<attribute name="fromdir" 
18
		           default="build/pkg" 
19
		           description="The relative location of the files to release."/>
20
 
21
		<sequential>
22
 
23
			<basename property="ant.buildfile.filename" file="${ant.file}"/>
24
			<dirname  property="ant.buildfile.path"     file="${ant.file}"/>
25
 
26
			<!-- Determine the logical path of the build (that is, the path that does not contain the drive letter) -->
27
			<propertyregex property = "ant.buildfile.lpath"
28
						   input    = "${ant.buildfile.path}"
29
						   regexp   = "[A-Za-z]\:\\(.*)"
30
						   select   = "\1"/>
31
 
32
			<if><equals arg1="@{version}" arg2=""/>
33
				<then>
34
					<fail message="Please specify the version to release."/>
35
				</then>
36
			</if>
37
			<!-- These properties CAN be set by the Jants cclabel task, but I don't trust it any more. -->
38
			<!-- I plan to phase out the old cclabel stuff and make it into scripts.                   -->
39
			<property name="jants.build.label"      value="@{package}_@{version}"/>
40
			<property name="jants.build.view.name"  value="${user.name}_jats_build_${jants.build.label}"/>
41
			<property name="jants.build.view.path"  value="O:\${jants.build.view.name}\${ant.buildfile.lpath}"/>
42
 
43
			<cclabel	package       = "@{package}"
44
						version       = "@{version}"
45
						findCheckouts = "true"
46
						mkview        = "true"/>
47
 
48
			<!-- Update the deskpkg file with the version to be released. -->
49
			<echo message="@{package}_@{version}" file=".undo"/>
50
 
1974 jgill 51
			<property name="jants.build.version"   value="@{version}"/>
52
			<property name="jants.project.name"    value="${ant.project.name}"/>
53
 
54
			<propertyset id="ant-release-properties">
55
				<propertyref name="jants.build.version"/>
56
				<propertyref name="jants.build.label" />
57
				<propertyref name="jants.build.view.name" />
58
				<propertyref name="jants.build.view.path" />
59
				<propertyref name="jants.project.name" />
60
			</propertyset>
61
 
1972 jgill 62
			<ant antfile     = "${ant.buildfile.filename}"
63
			     dir         = "${jants.build.view.path}"
64
				 inheritAll  = "false"
65
				 inheritRefs = "false"
66
				 target      = "@{release-target}">
1974 jgill 67
				<propertyset id="ant-release-properties" />
1972 jgill 68
			</ant>
69
 
70
			<!-- Release the files to dpkg_archive. -->
71
			<mkdir dir="${env.GBE_DPKG}/@{package}/@{version}"/>
72
 
73
			<echo message="Releasing files in [${jants.build.view.path}/@{fromdir}]"/>
74
			<copy todir="${env.GBE_DPKG}/@{package}/@{version}">
75
				<fileset dir="${jants.build.view.path}/@{fromdir}"/>
76
			</copy>
77
 
78
			<cclocklabel labelname="${jants.build.label}"/>
79
 
80
			<ccrmview viewname="${jants.build.view.name}"/>
81
 
82
			<delete file=".undo"/>
83
 
84
		</sequential>
85
 
86
	</macrodef>
87
 
88
 
89
 
90
	<macrodef name="ant-undo-release">
91
 
92
		<attribute name="package" default="${ant.project.name}"/>
93
 
94
		<sequential>
95
 
96
			<!-- Examine the manifest for the version that was released, and if it is set, set @{package} to that. -->
97
			<available property="undo.available" file=".undo"/>
98
			<fail unless="undo.available" message="Release cannot be undone."/>
99
			<loadfile srcFile=".undo" property="undo.version"/>
100
			<echo message="Undoing release ${undo.version}"/>
101
 
102
			<ccrmlabel labelname="${undo.version}"/>
103
			<ccrmview viewname="${user.name}_jats_build_${undo.version}"/>
104
 
105
			<delete file=".undo"/>
106
		</sequential>
107
 
108
	</macrodef>
109
 
110
 
111
	<target name="release">
112
		<ant-release/>
113
	</target>
114
 
115
 
116
	<target name="undo-release">
117
	    <ant-undo-release/>
118
	</target>
119
 
120
	<target name="-do-release" depends="build, make_package"/>
121
</project>