ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominique Devienne <DDevie...@lgc.com>
Subject RE: [PROPOSE] task parameters that are only supplied when a prope rty is defined
Date Fri, 08 Mar 2002 17:08:13 GMT
Instead of this special syntax, how about being able to specify a task's
attributes through <attribute> sub-elements? The example from Steve thus
becomes:

  <stcheckout username="auser"
                     password="secret"
                     rootlocalfolder="C:\dev\buildtest\co">
    <attribute name="URL" value="${starteam-url}" />
    <attribute name="forced" value="true" />
    <attribute name="label" valuefromproperty="lbl"
ignoreattributeifpropertynotdefined="true" />
  </stcheckout>

One can use the simple name/value attributes of <attribute> to specify the
task attribute as always (using literals or properties), and one can have
more specific ways to use attribute as shown above (which works kind of like
<propertycopy>).

Of course, there are two drawbacks to this syntax:
1) What happens with the attribute is specified both as an attribute, and
through <attribute>? I'd say a build syntax error.
2) Some tasks may already have an attribute sub-element? Maybe it should be
<task-attribute> or <${taskname}-attribute>, <stcheckout-attribute> in this
case?

This, if nothing else, has the merit of being more explicit that $${lbl} or
$?{lbl} or whatever. Just my 2c. --DD

 -----Original Message-----
From: 	Steve Cohen [mailto:SteveC@ignitesports.com] 
Sent:	Friday, March 08, 2002 10:53 AM
To:	ant-dev@jakarta.apache.org
Subject:	[PROPOSE] task parameters that are only supplied when a
property is defined

I previously sent this idea in a message whose title may have hidden its
importance, but this is an idea I'd really like to see and I'd like the
developers to comment on it.

What if there were a convenient syntax within ant for specifying task
attributes based on properties 

such that

if the property were not set 
	the task code would never see the attribute?

In other words, for example, look at this call:
  <stcheckout URL="STARTEAM:49201/Aproject/AView"
     username="auser"
     password="secret"
     rootlocalfolder="C:\dev\buildtest\co"
     forced="true" 
     label = "${lbl}"  
  />

If the lbl property is defined, the task will get its value as the label
attribute.  But if the lbl property is not defined, the task will get the
text "${lbl}" and most likely fail.

I am proposing a new syntax that would allow a property to be specified with
a different meaning.  Let's say this syntax is two dollar signs instead of
one ($${property}).  (This may not be the optimal symbol for the ant parser,
but that is a detail - I am not wedded to any symbol).

Using this syntax, the above example becomes:

  <stcheckout URL="STARTEAM:49201/Aproject/AView"
     username="auser"
     password="secret"
     rootlocalfolder="C:\dev\buildtest\co"
     forced="true" 
     label = "$${lbl}"  
  />

My proposal is that this syntax be interpreted this way:

If the property lbl is defined, treat $${lbl} exactly as ${lbl} but
if the property lbl is not defined, do not even pass the label attribute to
the task.

It seems to me that this would allow for much more flexible scripts,
especially when more than one parameter of a task is optional and there are
different use cases for the task.  In the above example, to get the variable
functionality desired, I must include two blocks in my script, one with the
label attribute defined and the other without it, and put it some
conditionals to direct the processing to the right place.  This can get
clumsy, especially if there are several attributes to parameterize; the
combinatorial possiblilities could be large, making for scripts that are
harder to understand or maintain.





--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message