> Tasks should offer functionality on a much higher level than functions ...

Here's my dream about NAnt:

1. Tasks should actually DO something. That "something" is: compile, create,
delete, XSL transform, update from cvs, send email, run unit tests, install,
uninstall, start/stop services, start/kill processes, compress/decompress.

There'are actually some tasks that do nothing like that, but they direct the
build process:

<call>
<description>
<fail>
<if>
<ifnot>
<include>
<loadtasks>
<nant>
<property>
<script>

These should be definitely kept.

2. I would consider removing any task that is neither used to direct the
build process nor noes "something" - as described above.
My candidates for removal are:

<sysinfo>
<tstamp>
<available>

3. I'm also thinking about removing:

<readregistry>    (maybe not, because it can be used to read many values at
once)
<xmlpeek> (maybe not, because it's a nice pair to <xmlpoke>)

4. I also think that <if> should be restructured to include only "test"
attribute.

<if propertytrue="aaaa" /> would become <if test="${aaaa}" />
<if propertyexists="aaaa" /> would become <if
test=${nant::property-exists('aaaa')}" />
<if targetexists="aaaa" /> would become <if
test=${nant::target-exists('aaaa')}" />

<ifnot> should be eliminated, because you can always write "not" in
expressions.

So:

<ifnot propertytrue="aaaa"/> would become <if test="${not aaaa}" />
<ifnot propertyexists="aaaa"/> would become <if test="${not
nant::property-exists('aaaa')}" />
<ifnot targetexists="aaaa"/> would become <if test="${not
nant::target-exists('aaaa')}" />

5. There's a problem with "uptodatefile", but I think this should go into
another task or a function. Like:

<check-up-to-date property="">
        <target-files>
            <includes name="..." />
        </target-files>
        <source-files>
            <includes name="..." />
        </source-files>
</check-up-to-date>

A function that would be useful for single-file to single-file comparison:

<if test="${file::is-newer-than('file1','file2')}" />

6. With these changes we'd have an <if> task that would be clean and we'd
get rid of <sysinfo>, <tstamp>, <available>

7. All above syntax changes could be done automatically with the help of a
simple XSLT file that would rewrite buildfiles.

Jarek



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive?  Does it
help you create better code?  SHARE THE LOVE, and help us help
YOU!  Click Here: http://sourceforge.net/donate/
_______________________________________________
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers

Reply via email to