>
> ----- 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

Reply via email to