Guis,
Why don't you just implement it as a nant extension function and then see if there is enough interest to include it in either nantcontrib or nant core.


Ian
Giuseppe Greco wrote:

----- Original Message -----
From: "Giuseppe Greco" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, March 02, 2004 7:49 AM
Subject: [nant-dev] Current target again...




...

My proposal is to introduce the concept of "generic target".
Let's go back to our gateway build file described above,
and rewrite the <recurse> target as a generic target:

<?xml version="1.0"?>

<project
 name="myProject"
 default="*">

 <target
   name="*"
   description="Builds recursively all subprojects">
   <foreach
     item="Folder"
     property="foldername">
     <in>
       <items>
         <includes name="*"/>
         <excludes name="CVS"/>
       </items>
     </in>
     <do>
       <nant
         buildfile="${foldername}/default.build"
         target="${project.config} ${nant.current.target}"/>
     </do>
   </foreach>
 </target>

</project>

Generic targets would specify "*" as their name, and NAnt
would always execute them.


I don't immediately see a need for this.



Let me show you a more detailed example. Here is a fragment of the caller build file (the one in the project's top directory):

...

 <target
   name="test"
   depends="init"
   description="Tests the current configuration">
   <property
     name="target"
     value="test"/>
   <nant buildfile="src/default.build"/>
 </target>

...

In this example, the "target" property is set to "test",
and then the <nant> task calls the gateway build file
described in my previous email. If NAnt would support
generic targets, we could reduce the target above like
this:

...

 <target
   name="test"
   depends="init"
   description="Tests the current configuration">
   <nant
     buildfile="src/default.build"
     target="${target::get-current-target()}"/>
 </target>

...


and then let gateway build files forward targets automatically:

<?xml version="1.0"?>



project


 name="myProject"
 default="*">
 <target
   name="*"
   description="Builds recursively all subprojects">
   <foreach
     item="Folder"
     property="foldername">
     <in>
       <items>
         <includes name="*"/>
         <excludes name="CVS"/>
       </items>
    </in>
     <do>
       <nant
        buildfile="${foldername}/default.build"
         target="${project.config} ${target::get-current-target()}"/>
     </do>
   </foreach>
 </target>
</project>

I think this would be a nice feature... but, of course,
that's just my opinion.

j3d.



At that point we also need a way
to get the target name specified by the calling build file,
and the answer is a built-in property named ${nant.current.target}.


I'm not sure we should implement this, but if we should we'd definitely
implement it as a function, not a built-in property.

I guess we could add the following functions :

target::get-target-name or target::get-current-target()

   this function returns the name of the current target
   this would throw an exception when there's no current target

target::get-description(string targetname)

   this functions returns the description of the specified target
   this would throw an exception when the targetname is null or the given
target does not exist

But I'd like to get feedback of other committers first ...

Gert





----------------------------------------
Giuseppe Greco

::agamura::

phone:  +41 (0)91 604 67 65
mobile: +41 (0)76 390 60 32
email:  [EMAIL PROTECTED]
web:    www.agamura.com
----------------------------------------


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers




--
Ian MacLean, Developer, ActiveState, a division of Sophos
http://www.ActiveState.com




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to