Subversion Repositories DevTools

Rev

Rev 1919 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<project name="ant-release-task">

        <macrodef name="ant-release">

                <attribute      name="package"        
                                        default="${packagename}"
                                        description="The name of the package in release manager and dpkg_archive." />
                                        
                <attribute      name="release-target" 
                                        default="-do-release"
                                        description="The target to invoke to copy the release to dpkg_archive." />
                
                <attribute      name="version"
                                        default="${packageversion}"
                                        description="The version of the package in release manager and dpkg_archive." />
                                        
                <attribute name="fromdir" 
                           default="build/pkg" 
                           description="The relative location of the files to release."/>

                <sequential>

                        <basename property="ant.buildfile.filename" file="${ant.file}"/>
                        <dirname  property="ant.buildfile.path"     file="${ant.file}"/>

                        <!-- Determine the logical path of the build (that is, the path that does not contain the drive letter) -->
                        <propertyregex property = "ant.buildfile.lpath"
                                                   input    = "${ant.buildfile.path}"
                                                   regexp   = "[A-Za-z]\:\\(.*)"
                                                   select   = "\1"/>

                        <if><equals arg1="@{version}" arg2=""/>
                                <then>
                                        <fail message="Please specify the version to release."/>
                                </then>
                        </if>
                        <!-- These properties CAN be set by the Jants cclabel task, but I don't trust it any more. -->
                        <!-- I plan to phase out the old cclabel stuff and make it into scripts.                   -->
                        <property name="jants.build.label"      value="@{package}_@{version}"/>
                        <property name="jants.build.view.name"  value="${user.name}_jats_build_${jants.build.label}"/>
                        <property name="jants.build.view.path"  value="O:\${jants.build.view.name}\${ant.buildfile.lpath}"/>

                        <!--
                        <ccmklbtype typename = "${jants.build.label}-TEST"
                                    global   = "true"/>

                        <ccmklabel typename="${jants.build.label}-TEST"
                                   viewpath="${basedir}"/>-->


                        <cclabel        package       = "@{package}"
                                                version       = "@{version}"
                                                findCheckouts = "true"
                                                mkview        = "true"/>

                        <!-- Update the deskpkg file with the version to be released. -->
                        <echo message="@{package}_@{version}" file=".undo"/>

                        <ant antfile     = "${ant.buildfile.filename}"
                             dir         = "${jants.build.view.path}"
                                 inheritAll  = "false"
                                 inheritRefs = "false"
                                 target      = "@{release-target}">
                                <property name="jants.build.version"   value="@{version}"/>
                                <property name="jants.build.label"     value="${jants.build.label}"/>
                                <property name="jants.build.view.name" value="${jants.build.view.name}"/>
                                <property name="jants.build.view.path" value="${jants.build.view.path}"/>
                                <property name="jants.project.name"    value="${ant.project.name}"/>
                        </ant>
                        
                        <!-- Release the files to dpkg_archive. -->
                        <mkdir dir="${env.GBE_DPKG}/@{package}/@{version}"/>

                        <echo message="Releasing files in [${jants.build.view.path}/@{fromdir}]"/>
                        <copy todir="${env.GBE_DPKG}/@{package}/@{version}">
                                <fileset dir="${jants.build.view.path}/@{fromdir}"/>
                        </copy>
                
                        <cclocklabel labelname="${jants.build.label}"/>

                        <ccrmview viewname="${jants.build.view.name}"/>

                        <delete file=".undo"/>

                </sequential>

        </macrodef>



        <macrodef name="ant-undo-release">

                <attribute name="package" default="${ant.project.name}"/>

                <sequential>

                        <!-- Examine the manifest for the version that was released, and if it is set, set @{package} to that. -->
                        <available property="undo.available" file=".undo"/>
                        <fail unless="undo.available" message="Release cannot be undone."/>
                        <loadfile srcFile=".undo" property="undo.version"/>
                        <echo message="Undoing release ${undo.version}"/>

                        <ccrmlabel labelname="${undo.version}"/>
                        <ccrmview viewname="${user.name}_jats_build_${undo.version}"/>

                        <delete file=".undo"/>
                </sequential>

        </macrodef>


        <target name="release">
                <ant-release/>
        </target>


        <target name="undo-release">
            <ant-undo-release/>
        </target>

        <target name="-do-release" depends="build, make_package"/>
</project>