Why do you use <macrodef> for one line of code?  Basically, you're creating a 
subset of <math> with <increment>.  Is that standard among the Ant community?




________________________________
From: Francis Galiegue <f...@one2team.com>
To: Ant Users List <user@ant.apache.org>
Sent: Wednesday, May 6, 2009 3:23:37 PM
Subject: Re: Reset BuildNumber

Le Wednesday 06 May 2009 19:17:25 Eric Fetzer, vous avez écrit :
> Get sidetracked?
>

Yup, but I got the result ;)

Here it is. Feel free to ask questions. This file is based on a build.number 
file which contains the major.number, minor.number, etc properties, and 
rewrites said file with the new values when it is done. Curiously, you don't 
reset hotfix if you update revision... I let it as is. I think you'll see 
where to reset hotfix otherwise.

It may be longer than your solution, but I think it is more legible - and more 
easily extensible.

Have fun!

----
<project name="test" basedir="." default="updateBuildNumber">
<!-- vim:set ts=4 noexpandtab syn=ant: -->

    <taskdef resource="net/sf/antcontrib/antlib.xml"/>
    <property file="build.number"/>

    <macrodef name="increment">
        <attribute name="victim"/>
        <sequential>
            <math result="ne...@{victim}" operand1="$...@{victim}.number}"
                operation="+" operand2="1" datatype="int"/>
        </sequential>
    </macrodef>


    <target name="init">
        <var name="next.major" value="${major.number}"/>
        <var name="next.minor" value="${minor.number}"/>
        <var name="next.hotfix" value="${hotfix.number}"/>
        <var name="next.revision" value="${revision.number}"/>
        <var name="next.continuous" value="${continuous.number}"/>
    </target>

    <target name="andwhat" if="rebuild" depends="init">
        <property name="done" value="true"/>
    </target>

    <target name="majorIncrement" if="majorIncrement" unless="done"
        depends="andwhat">
        <increment victim="major"/>
        <var name="next.minor" value="1"/>
        <var name="next.hotfix" value="1"/>
        <var name="next.revision" value="1"/>
        <var name="next.continuous" value="1"/>
        <property name="done" value="true"/>
    </target>

    <target name="minorIncrement" if="minorIncrement" unless="done"
        depends="majorIncrement">
        <increment victim="minor"/>
        <var name="next.hotfix" value="1"/>
        <var name="next.revision" value="1"/>
        <var name="next.continuous" value="1"/>
        <property name="done" value="true"/>
    </target>

    <target name="hotfixIncrement" if="hotfixIncrement" unless="done"
        depends="minorIncrement">
        <increment victim="hotfix"/>
        <var name="next.revision" value="1"/>
        <var name="next.continuous" value="1"/>
        <property name="done" value="true"/>
    </target>

    <target name="continuousIncrement" if="continuous" unless="done"
        depends="hotfixIncrement">
        <if>
            <equals arg1="${cont.reset}" arg2="true"/>
            <then>
                <var name="next.continuous" value="1"/>
            </then>
            <else>
                <increment victim="continuous"/>
            </else>
        </if>
        <property name="done" value="true"/>
    </target>

    <target name="revisionIncrement" unless="done"
        depends="continuousIncrement">
        <increment victim="revision"/>
        <property name="done" value="true"/>
    </target>

    <target name="updateBuildNumber" depends="revisionIncrement">
        <propertyfile file="build.number">
            <entry key="major.number" value="${next.major}"/>
            <entry key="minor.number" value="${next.minor}"/>
            <entry key="hotfix.number" value="${next.hotfix}"/>
            <entry key="revision.number" value="${next.revision}"/>
            <entry key="continuous.number" value="${next.continuous}"/>
        </propertyfile>
    </target>

</project>
----

-- 
Francis Galiegue
f...@one2team.com
Ingénieur système
Mob : +33 (0) 683 877 875
Tel : +33 (0) 178 945 552
One2team
40 avenue Raymond Poincaré
75116 Paris

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@ant.apache.org
For additional commands, e-mail: user-h...@ant.apache.org


      

Reply via email to