Right... so use the property::get-value() function. I think this is what you 
need to do:

<?xml version="1.0" ?>
<project name="test">


        <loadproperties file="buildLabels.properties" />

        <!-- The foreach bellow will loop through the list of projects in the 
Project.Build.Order in the buildLabels.properties -->
        <foreach item="String" in="${Project.Build.Order}" delim="," 
property="properties.project.Ord">
                        <echo message="${properties.project.Ord}" />            
        
                         <call target="build.project"/>
        </foreach>

        <target name="build.project">
                <property name="ProjectName" value="${ 
property::get-value(properties.project.Ord+'.ProjectName')}"/>
                <property name="ViewName" value="${ 
property::get-value(properties.project.Ord +'.ViewName')}"/>
                <property name="Label" value="${ 
property::get-value(properties.project.Ord +'.Label')}"/>
                <echo>${ProjectName} ${ViewName} ${Label}</echo>
                <call target="checkoutModuleSrc"/>
        </target>

        <!-- checkout src directory -->
        <target name="checkoutModuleSrc">
        <!--
                <exec program="${starteam.cmd}">
                                 <arg line="co -p 
${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl 
${Label}"/>
                </exec>
        -->     
                <echo message="${ProjectName} -o -cfgl ${Label}" />
                
        </target>


</project>

> -----Original Message-----
> From: Labout, Douglas [mailto:douglas.lab...@efirstbank.com]
> Sent: Monday, June 17, 2013 2:24 PM
> To: Bob Archer; 'nant-users@lists.sourceforge.net'
> Subject: RE: Nested variables
> 
> Hmm,
> Let's see if I can explain it better...
> 
> Here is the properties file that contains all the components to be built and 
> their
> associated views and labels.
> 
> # Projects Build Order
> Project.Name=WCFServices
> Project.Build.Directory=C:\/VisualStudio\/
> Project.Build.Order=NETComponents,NETDLLs,App
> Project.Deploy=C:\/VisualStudio\/\Windows - BuildScripts\/Deploy\/
> 
> # Windows - .NET Components
> NETComponents.ProjectName=Windows - .NET Components
> NETComponents.ViewName=Windows - .NET Components
> NETComponents.Label=201261654
> 
> # Windows - .NET DLLs
> NETDLLs.ProjectName=Windows - .NET DLLs
> NETDLLs.ViewName=Windows - .NET DLLs
> NETDLLs.Label=2013064494
> 
> # Windows - WCFServices_NewAccounts.DataAccess
> App.ProjectName=Windows - _WCFServices
> App.ViewName=Windows - _WCFServices
> App.Label=201111781
> 
> I use <loadproperties file="buildLabels.properties" /> to load the lines in 
> the
> property file.
> 
> Here is the loop that pulles build order:
> 
> <!-- The foreach bellow will loop through the list of projects in the
> Project.Build.Order in the buildLabels.properties -->
> 
>         <foreach item="String" in="${Project.Build.Order}" delim=","
> property="properties.project.Ord">
>                  <call target="build.project"/>
>         </foreach>
> 
> Here is the build.project target:
> 
> <target name="build.project">
>         <property name="ProjectName" value="${
> properties.project.Ord+'.ProjectName'}"/>
>         <property name="ViewName" value="${ properties.project.Ord'
> +'.ViewName'}"/>
>         <property name="Label" value="${ properties.project.Ord'+'.Label'}"/>
>         <echo>${ProjectName} ${ViewName} ${Label}</echo>
>         <call target="checkoutModuleSrc"/>
> 
> And finally, here is the checkoutModuleSrc target:
> 
>         <!-- checkout src directory -->
>   <target name="checkoutModuleSrc">
> 
>         <exec program="${starteam.cmd}">
>                  <arg line="co -p
> ${STUser}:${STPassword}@${STServer}:${STPort}/${ProjectName} -o -cfgl
> ${Label}"/>
>         </exec>
> 
> 
> You can see that I loop through the build order and pick up one of the 
> projects
> to be built, then append the .Projectname, .viewname and .label and then
> check out the code.
> 
> The problem is that I can get it to return the property.project.Ord, but can't
> append the .ProjectName, .ViewName, or Label without it interpreting it as
> NETDLLs.ProjectName.
> 
> 
> -----Original Message-----
> From: Bob Archer [mailto:bob.arc...@amsi.com]
> Sent: Monday, June 17, 2013 10:47 AM
> To: Labout, Douglas; 'nant-users@lists.sourceforge.net'
> Subject: RE: Nested variables
> 
> Ok... I guess I'm still not understanding what is in each variable:
> 
> > You are correct in that I'm trying to put together a couple of variables.
> > The build order is assigned to the variable ${properties.project.Ord}.
> > I then
> 
> What is the exact text in that variable?
> 
> > append to the end of that variable the .ProjectName,
> 
> Is that a property, or a literal? What value is in .ProjectName (assuming 
> that is
> a variable?)
> 
>  .ViewName, and .Label
> > and assign them to ${ProjectName}. I then pass $ProjectName to my
> > starteam checkout.
> 
> Same questions...
> 
> Are you trying to build a new variable name? So, when you say you want to
> append .ProjectName you mean the contents of that?
> 
> If I knew what was in each variable in addition to the final value you expect 
> in
> the variable, I could help you with more specific code.
> 
> BOb
> 
> 
> >
> > The trouble is that ${properties.project.Ord} returns as "NETDLLS" but
> > when I want the variable ${NETDLLS.ProjectName} to be returned as
> > "NETDLLs.ProjectName=Windows - .NET DLLs" it instead comes back as
> > "NETDLLS.ProjectName".
> >
> > StarTeam goes looking for a NETDLLS.ProjectName and of course can't
> > find it and dies.
> >
> > Thanks for the help!
> > Much appreciated!
> > -Doug
> >
> > -----Original Message-----
> > From: Bob Archer [mailto:bob.arc...@amsi.com]
> > Sent: Monday, June 17, 2013 9:22 AM
> > To: Labout, Douglas; 'nant-users@lists.sourceforge.net'
> > Subject: RE: Nested variables
> >
> > > Hello,
> > > I'm working on converting an Ant script to Nant and have ran into an
> > > issue with joining several variables together in Nant.
> > >
> > > Below is the original Ant script in which it pulls information from
> > > a properties file and uses the information to feed the build. The
> > > project starts by looping through build order (NETDLLS, App) and
> > > then uses that variable to prepend to the ProjectName to check out of
> StarTeam.
> > >
> > > Project.Build.Order=NETDLLs,App
> > >
> > > # Windows - .NET DLLs
> > > NETDLLs.ProjectName=Windows - .NET DLLs NETDLLs.ViewName=Windows
> -
> > > .NET DLLs
> > > NETDLLs.Label=201300722.20130508
> > >
> > > ANT script:
> > > <target name="build.project">
> > >       <property name="ProjectName"
> > > value="${buildProp.${project.Ord}.ProjectName}"/>
> > >       <property name="ViewName"
> > > value="${buildProp.${project.Ord}.ViewName}"/>
> > >       <property name="Label"
> > > value="${buildProp.${project.Ord}.Label}"/>
> > >
> > >       <antcall target="checkoutModuleSrc" inheritall="true"/>
> > >
> > > Here is what I have come up with in Nant which doesn't seem to be
> working.
> > >
> > > NAnt script:
> > > <target name="build.project">
> > >       <property name="ProjectName"
> > > value="${'properties.project.Ord'+'.ProjectName'}"/>
> > >       <property name="ViewName"
> > > value="${'properties.project.Ord'+'.ViewName'}"/>
> > >       <property name="Label"
> > > value="${'properties.project.Ord'+'.Label'}"/>
> > >       <echo>${ProjectName} ${ViewName} ${Label}</echo>
> > >       <call target="checkoutModuleSrc"/>
> > >
> >
> > I assume based on your title "nested variables" you want to do
> > something like
> > this:
> >
> >
> > <property name="ProjectName" value="${property::get-
> > value('properties.project.Ord.ProjectName')}"/>
> >
> > ?????
> >
> > BOb
> >
> >
> >
> > > Results of the script at the command line:
> > > checkoutModuleSrc:
> > >
> > >      [exec] StarTeam 10.4 Command Line Interface, Build 10.4.8.36
> > >      [exec] Copyright (c) 2003-2008 Borland Software Corporation.
> > > All rights res erved.
> > >      [exec] Using ini file: C:\Documents and Settings\All
> > > Users\Application Data \Borland\StarTeam\ConnectionManager.ini
> > >      [exec] Project not found: properties.project.Ord.ProjectName
> > >
> > > I would appreciate any help you can provide.
> > >
> > > Thanks,
> > > -Doug Labout
> > >
> > >
> > > The information contained in this electronic communication and any
> > > document attached hereto or transmitted herewith is confidential and
> > > intended for the exclusive use of the individual or entity named
> > > above. If the reader of this message is not the intended recipient
> > > or the employee or agent responsible for delivering it to the
> > > intended recipient, you are hereby notified that any examination,
> > > use, dissemination, distribution or copying of this communication or
> > > any part thereof is strictly prohibited. If you have received this
> > > communication in error, please immediately notify the sender by
> > > reply e-mail
> > and destroy this communication. Thank you.
> >
> > The information contained in this electronic communication and any
> > document attached hereto or transmitted herewith is confidential and
> > intended for the exclusive use of the individual or entity named
> > above. If the reader of this message is not the intended recipient or
> > the employee or agent responsible for delivering it to the intended
> > recipient, you are hereby notified that any examination, use,
> > dissemination, distribution or copying of this communication or any
> > part thereof is strictly prohibited. If you have received this
> > communication in error, please immediately notify the sender by reply e-mail
> and destroy this communication. Thank you.
> 
> The information contained in this electronic communication and any document
> attached hereto or transmitted herewith is confidential and intended for the
> exclusive use of the individual or entity named above. If the reader of this
> message is not the intended recipient or the employee or agent responsible for
> delivering it to the intended recipient, you are hereby notified that any
> examination, use, dissemination, distribution or copying of this communication
> or any part thereof is strictly prohibited. If you have received this
> communication in error, please immediately notify the sender by reply e-mail
> and destroy this communication. Thank you.

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to