I've been following this discussion and just saw Bruce Atherton's post
about using DSTAMP and TSTAMP to time portions of builds, and this
triggered a thought.
We on the list seem to be agreeing that properties should all be immutable.
But should they all be global? (or at least, should they be globally
accessible from whenever they were first set, or should their lifetime be
limited/limitable?)
It seems to me that the question of "Should we be able to change a property
after it has been set?" is different to "Where should we be able to use
this property?"
I have a suggestion: How about adding a new attribute to target specifying
local-properties that works as follows:
- When the target is invoked, an exception is raised if any of the
properties are already set (preserve property immutability, and ensure
they're not set at the start)
- When the target is complete, any values for the named properties are
removed from the project (limits scope)
eg (using Bruce's example):
<target name="build" depends="init,checkout,compile" />
<target name="init" local-properties="DSTAMP,TSTAMP" >
<tstamp />
<echo message="Started Build - ${DSTAMP} ${TSTAMP}" />
</target>
<target name="checkout" depends="init,do-checkout"
local-properties="DSTAMP,TSTAMP">
<tstamp />
<echo message="Finished Checkout - ${DSTAMP} ${TSTAMP}" />
</target>
<target name="compile" depends="init,do-compile"
local-properties="DSTAMP,TSTAMP">
<tstamp />
<echo message="Finished Compile - ${DSTAMP} ${TSTAMP}" />
</target>
What do y'all think?
Cheers,
Bevan.
--
"Programming is an Art Form that Fights Back"
Bevan Arps (<mailto:[EMAIL PROTECTED]>[EMAIL PROTECTED])
Senior OO Analyst, ACT Financial Systems
This communication is confidential to ACT Financial Systems (Asia
Pacific) and is intended for use only by the addressee. The views and
opinions expressed in this email are the senders own and do not
represent the views and opinions of ACT Financial Systems (Asia
Pacific).