Subversion Repositories DevTools

Rev

Rev 1915 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

        <macrodef name="ant-release">

                <attribute name="package"        default="${ant.project.name}"/>
                <attribute name="release-target" default="-do-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"/>

                        <antshield packageName="${ant.project.name}"/>

                        <!-- 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}_${antshield.release}"/>
                        <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       = "${antshield.release}"
                                                findCheckouts = "true"
                                                mkview        = "true"/>

                        <!-- Update the deskpkg file with the version to be released. -->
                        <echo message="${antshield.release}" 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="${antshield.release}"/>
                                <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}"/>
                        </ant>


                        <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="@{package}_${undo.version}"/>
                        <ccrmview viewname="${user.name}_jats_build_@{package}_${undo.version}"/>

                </sequential>

        </macrodef>


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


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

</project>