This kind of things can be achieved indirectly using either <propertycopy>
from ant-contrib (for sure), or id/refid, provided you can set the ids as
below (precludes loading the properties file, since cannot assign ids).

No telling that it's kind of a hack ;-) --DD

------- 1.4.1 output -------
P:\org_apache\antx>ant -buildfile nestedProperties.xml
Buildfile: nestedProperties.xml

test:
Overriding previous definition of reference to host1
Overriding previous definition of reference to host2
     [echo] build.host = host2.acme.org

BUILD SUCCESSFUL

Total time: 1 second

------- 1.5 output -------
P:\org_apache\antx>C:\pro\ant1.5\bin\ant -buildfile nestedProperties.xml
Buildfile: nestedProperties.xml

test:
     [echo] build.host = host2.acme.org

BUILD SUCCESSFUL
Total time: 1 second

------- nestedProperties.xml -------
<?xml version="1.0"?>

<!-- ANT build file to test a specific feature or bug of ANT.
     Dominique Devienne <[EMAIL PROTECTED]>      August 2002
  -->
<project name="antx" default="test" basedir=".">

  <target name="test">
    <!-- Simulate loading the properties file (kinda!)
    <property file="hosts.properties"/>
      -->
    <property id="host1" name="host1" value="host1.acme.org"/>
    <property id="host2" name="host2" value="host2.acme.org"/>

    <!-- Simulate running the 'hostname' command
    <exec outputproperty="hostname" executable="hostname"/>
      -->
    <property name="hostname" value="host2" />

    <property name="build.host" refid="${hostname}"/>
    <echo  message="build.host = ${build.host}"/>
  </target>

</project>


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, August 15, 2002 11:59 AM
To: [EMAIL PROTECTED]
Subject: nested properties anyone?

Problem:
>From the list of the predefined properties key=value select one based on the
value of some other property and use it as a default

Example:
I have a list of servers (hosts.properties), where key is an actual hostname
(obtained from hostname command) and value is a domain, e.g.
host_one=host_one.somewhere.com
host_two=host_two.some.place.else.com
I want to determine on which machine I'm running the script and use a full
domain name further in the script.

Solution?
1. <property file="hosts.properties"/>
2. <exec outputproperty="hostname" executable="hostname"/>
3. Now I have a ${hostname} and I want to assign its value to the property
build.host that I use in my script. My first reaction was to do this:
<property name="build.host" refid="${${hostname}}"/>
Well it didn't work because curleys are evaluated only once and I'm getting
the
value of build.host literaly as "${hostname}"
Is there any other way? Any way? 
And I think that it would be nice feature to reevaluate the nested brackets

Bob Stone

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to