Re: [nant-dev] FileSetCollection and the copy task questions

2004-01-13 Thread William E Caputo
Martin Aliger:
We are currently extending fileset to enable add something to existing
fileset.

Yes, that would work for the example I sent (I thought about your recent 
posts after I sent my email). After sending, I realized that the 
refactoring I was doing also needed to do something like this (for which I 
don't think the redefining modification is enough):

copy todir=\foo\one
   fileset refid=common.files /
   fileset refid=less.common.files /
 /copy

copy todir=\foo\two
   fileset refid=common.files /
   fileset refid=other.common.files /
 /copy

copy todir=\foo\two
   fileset refid=other.common.files /
   fileset refid=less.common.files /
 /copy

(etc)

In short, I have somewhere between 3 and 5 discrete blocks of assemblies 
that have to be copied to something like 10 different directories, in 
various combinations that make it impossible (as far as I can see) to get 
rid of the redundancy with single filesets.

Unless, the new mods support multiple refid's? (that would remove the need 
for multiple fileets -- at least in my case). E.g.:

copy todir=\foo\two
   fileset refid=common.files refid=other.common.files mode=append 
/
 /copy

or perhaps:

copy todir=\foo\two mode=append 
   fileset
refidcommon.files/refid
refidother.common.files/refid
   /fileset
 /copy

If not (and I am assuming not, from what I've seen so far), I would be 
interested in people's opinions on the  preferred way -- multiple refid's 
or multiple filesets (or both, or something else)?

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis





---
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
___
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers


[nant-dev] FileSetCollection and the copy task questions

2004-01-12 Thread William E Caputo
Hi All,

I am making sure I am not missing anything. I would like to use the copy 
task with multiple filesets like so:

copy 
todir=${project.source.root}\${application.architecture.serviceinterface.bin.directory}
  fileset refid=common.files /
  fileset basedir=${other.files.dir}
   includes name=**.foo /
  /fileset
/copy

The advantage of being able to do this is to be better able to factor out 
duplication (without having to duplicate otherwise identical copy tasks, 
that could eventually get separated in the build file).

So, realizing that it wasn't there, I set out to add it, and I want to get 
some feedback first. Here are my assumptions/questions that I want 
confirmed/answered:

1) Should I use BuildElementArray or BuildElementCollection
2) There doesn't appear to be a FileSetCollection is that correct?
3) If so, is there any big issue that has prevented the creation of one 
(i.e. has someone tried?) or is it that it just hasn't been needed yet?
4) The CopyTask currently accesses a single FileSet, assuming a 
FileSetCollection existed, it appears that factoring the code that 
accesses this single fileset into a method called in a loop iterating 
across the fileset collection will provide the desired result -- anyone 
see any reason why not?

Assuming I haven't missed anything, this looks like a relatively small 
change, that would result in a generally useful type (i.e. 
FileSetCollection) and the multi-fileset copy task. If this seems useful 
(and we get time to make the change) I will submit it back, if the nant 
team finds it useful.

Thoughts?

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis





---
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
___
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers


Re: [nant-dev] SUBMISSION: Path Task

2003-12-14 Thread William E Caputo
Gert:
I'm definitely not saying that we should provide a task alternative for
every function we support in the expression eval, but by not providing 
task
support for basic build tasks, we're actually forcing build authors 
to
use expression support ...

I look at the separation between tasks and functions like the difference 
between a procedure and a function in a procedural programming language: 
nant tasks are procedures that do something but don't return a value, 
while nant functions are functions that don't do anything except return a 
value based on their input. 

With this distinction, we can see that sysinfo still makes sense as a 
task. It doesn't return a value (its more like a procedure that 
initializes a bunch of class variables. The path task in contrast, does 
nothing except return a single value into a property, and so makes more 
sense as a set of functions.

You can see the difference in these hypothetical method definitions:

void mkdir(string path) { /*unconditionally create a directory at the 
given location*/
void sysinfo() { /*unconditionally set a clearly defined set of class 
properties*/ }
string path(string partial, bool fullpath, bool pathonly) /*do ugly 
branching and return a string*/ }
bool available(string resource, TypeEnum type) /*do ugly branching and 
return a string*/ }

So, rather than forcing people one way or the other, I think functions 
make it easier for nant users to see when each is appropriate to use (and 
for submitters to write): Use functions to get single values, use tasks 
for everything else.

If we decide to add William's task, I think we should :
(suggestions snipped)
What do you think ?

I lean toward not incorporating my submission. I think functions are a 
better approach for its functionality, and we don't lose anything for it 
(indeed as Ian pointed out, it will actually be cleaner as a set of 
functions). 

Also, depending on whether functional support is a) soon to be 
incorporated, and b) modular and extensible, I would be willing to rewrite 
the path task's functionality as functions (if they aren't already done).

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis





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


Re: [nant-dev] SUBMISSION: Path Task

2003-12-14 Thread William E Caputo
Ian:
Personally I think this case is fairly clear cut. Any 
task that has a property attribute and whose purpose is to set that 
attribute will be more simply expressed using a function:

FWIW, I agree with this. I wrote the path task simply to make it 
unnecessary to have to use a script task over and over for a relatively 
common activity. However, I too think functions are a better way to 
accomplish this (I simply didn't realize that support for them was this 
far along).

That leads me to another point. Functional tasks like this tend to have 

multiple functions combined in the one task to reduce the number 
of tasks that need to be written.

Yup, and that makes it hard to test them thoroughly because of the 
combinatorial explosion of parameter interactions. Having each operation 
as a single function that does a single thing makes the nant code (and 
thus the build script) more easily testable, and thus more robust 
(assuming each is actually tested). Which brings me to a related question:

Will functions be like tasks in that they can be written separately, 
dropped in and just be available (e.g. by placing MyProjectFunctions.dll 
in the nant bin)?

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis





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


Re: [nant-dev] SUBMISSION: Path Task

2003-12-14 Thread William E Caputo
Jarek:
See attached code for actual code used to implement path::* functions.

That looks great, thanks!

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis





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


[nant-dev] SUBMISSION: Path Task

2003-12-13 Thread William E Caputo
(This is a resend. I didn't see it come across the list the first time I 
sent it. My apologies if it comes through twice)

Hi All,

Attached is a zip file containing a task called path. This task extracts 
path information from a given partial (or complete) path name and 
optionally expands it to a fully-qualified path, using either the current 
working directory or the Project's base directory as the root, and places 
in a designated property.

I looked through the list of tasks and didn't see anything that did 
something like this (and we needed it) so after implementing it in a 
script task, I decided to code it up as a full-fledged task and submit it 
in the hope that it will be useful to others.

I wrote it is as being in the Nant.Core namespace because that is where 
copy and mkdir are (and we seem to always be manipulating paths in our 
build files) but if the project's admins prefer that it be a somewhere 
else in NAnt or submitted to NAntContrib instead that is fine by me (I 
didn't cross post, but I will send it to that list if you like).

The task is accompanied by 12 tests, and is fully documented.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis

Hi All,

Attached is a zip file containing a task called path. This task extracts 
path information from a given partial (or complete) path name and 
optionally expands it to a fully-qualified path, using either the current 
working directory or the Project's base directory as the root, and places 
in a designated property.

I looked through the list of tasks and didn't see anything that did 
something like this (and we needed it) so after implementing it in a 
script task, I decided to code it up as a full-fledged task and submit it 
in the hope that it will be useful to others.

I wrote it is as being in the Nant.Core namespace because that is where 
copy and mkdir are (and we seem to always be manipulating paths in our 
build files) but if the project's admins prefer that it be a somewhere 
else in NAnt or submitted to NAntContrib instead that is fine by me (I 
didn't cross post, but I will send it to that list if you like).

The task is accompanied by 12 tests, and is fully documented.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis




PathTask.zip
Description: Zip archive


Re: [nant-dev] SUBMISSION: Path Task

2003-12-13 Thread William E Caputo
Ian MacLean:
This looks good William. However I'm thinking that the new function 
support will be easier to use to do this kind of stuff.

Sounds good -- and I agree it will be easier to use that way. Looking 
forward to seeing that in the next version! :-)

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis







Ian MacLean [EMAIL PROTECTED]
12/13/2003 10:38 PM

 
To: William E Caputo [EMAIL PROTECTED]
cc: [EMAIL PROTECTED]
Subject:Re: [nant-dev] SUBMISSION: Path Task


This looks good William. However I'm thinking that the new function 
support will be easier to use to do this kind of stuff.

the following path related functions will be included:

path.changeextension 
path.combine 
path.getdirectoryname 
path.getextension 
path.getfilename 
path.getfilenamewithoutextension 
path.getfullpath 
path.getpathroot 
path.gettempfilename 
path.gettemppath 
path.hasextension 
path.ispathrooted

Ian

William E Caputo wrote:

(This is a resend. I didn't see it come across the list the first time I 
sent it. My apologies if it comes through twice)

Hi All,

Attached is a zip file containing a task called path. This task extracts 
path information from a given partial (or complete) path name and 
optionally expands it to a fully-qualified path, using either the current 

working directory or the Project's base directory as the root, and places 

in a designated property.

I looked through the list of tasks and didn't see anything that did 
something like this (and we needed it) so after implementing it in a 
script task, I decided to code it up as a full-fledged task and submit it 

in the hope that it will be useful to others.

I wrote it is as being in the Nant.Core namespace because that is where 
copy and mkdir are (and we seem to always be manipulating paths in our 
build files) but if the project's admins prefer that it be a somewhere 
else in NAnt or submitted to NAntContrib instead that is fine by me (I 
didn't cross post, but I will send it to that list if you like).

The task is accompanied by 12 tests, and is fully documented.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis

Hi All,

Attached is a zip file containing a task called path. This task extracts 
path information from a given partial (or complete) path name and 
optionally expands it to a fully-qualified path, using either the current 

working directory or the Project's base directory as the root, and places 

in a designated property.

I looked through the list of tasks and didn't see anything that did 
something like this (and we needed it) so after implementing it in a 
script task, I decided to code it up as a full-fledged task and submit it 

in the hope that it will be useful to others.

I wrote it is as being in the Nant.Core namespace because that is where 
copy and mkdir are (and we seem to always be manipulating paths in our 
build files) but if the project's admins prefer that it be a somewhere 
else in NAnt or submitted to NAntContrib instead that is fine by me (I 
didn't cross post, but I will send it to that list if you like).

The task is accompanied by 12 tests, and is fully documented.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis


 



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






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


[nant-dev] Re: [NAntC-Dev] 0.8.4 Beta

2003-11-26 Thread William E Caputo
vssget task changes are good to go.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.williamcaputo.com

idia ktesis, koine chresis







Gert Driesen [EMAIL PROTECTED]
Sent by: [EMAIL PROTECTED]
11/26/2003 01:21 PM

 
To: Nant-Developers (E-Mail) [EMAIL PROTECTED], 
[EMAIL PROTECTED]
cc: 
Subject:[NAntC-Dev] 0.8.4 Beta


Hi,

I'd like to ensure that the release notes for both NAnt and NAntContrib 
are
complete.

Can everyone that contributed code to NAnt and NAntContrib since the 0.8.3
release double-check whether the release notes (/doc/releasenotes.html in
NAnt/NAntContrib cvs or /releasenotes.html on the NAnt and NAntContrib
websites) are complete and correct ?

Please validate the updated XHTML using the W3C MarkUp Validation Service
(http://validator.w3.org/) if you make changes to make sure we keep the html
docs XHTML 1.1 compliant ...

Things that still need to be added (that I know of) are :

- changes to cvs tasks (Clayton, can you take care of this ?)
-  changes to solution task (I'm thinking of webmap support and stuff)

But I'm probable missing some stuff, so feel free to correct me (and the
release notes) ...

Thanks,

Gert




---
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/
___
NAntContrib-Developer mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer





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


[nant-dev] Expansion of properties in target descriptions

2003-10-31 Thread William E Caputo
Hi All,

I realize this is not implemented, and I am not even sure if it should be, 
but I was wondering if someone could point me in the right direction for 
figuring out if it easily could be done.

As near as I can tell, projecthelp is extracted using an xslt that is 
executed completely independent of the parsing of targets. So, the three 
things I am trying to determine right now are:

1) Where in the code are the properties expanded into their values for use 
in tasks?
2) Would doing this before transforming for projecthelp be of any value, 
or (as I suspect) is it done in the parsed data, and so would  have no 
impact
3) What would need to be done to change projecthelp to work off of the 
parsed target information (assuming again that this includes the 
description).

If anyone can save me a bit of time by pointing me at the right classes to 
look at so I can find the answers, that would be much appreciated.

Also, if it turns out to be feasible, is this something that the nant team 
would be interested in having, or is this considered counter to the design 
goals of the tool in some way?

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.
http://www.twelve71.com/caputo/

Continuous Integration: Watchin' the hella tech ta' boost da' shiggety 
shiggety shwa.







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


[nant-dev] RE: NAntContrib update

2003-06-28 Thread William E Caputo




Tomas:
That said, I'd like to take the opportunity to vent something that has
been
nagging me for a while

An excellent description of your frustration, Tomas. I think it is
important for the users of a system to explain to its creators what is
bothering them. I want to make a couple of comments, but I want to stress
first that I understand and even agree with many of your comments, and I
don't want to imply that you shouldn't have made them...


All the continuous NAnt restructuring...
I'm going to be brutally honest here: Even though no 1.0 release of nant
has
ever been done, it has been used by people to build *real* systems for a
really long time now.

As you say, NAnt is not yet at 1.0, isn't it an unrealistic expectation of
us early adopters to use a pre-1.0 release and constrain its developers not
to change the system radically as they learn new things in order to get the
product to 1.0?

My big point is that many of the changes were done with little or no
regard
to the impact they might have on code outside the actual nant code base,
and
that's a problem now. One I personally consider a serious one.

Again pre-1.0, an extension mechanism and general architecture that works
well, is clear and is maintainable outweighs backward compatibility IMO. As
an early adopter (who has written custom tasks as well) I fully expect
this. Further, I also know that I don't *have* to upgrade. If I have that
software working on a real project, I can use that version, migrating my
tasks (if they are generic enough for reuse) at a later date, when the
architecture stabilizes (which I would expect in the 1.0 version of NAnt).

If you want people to use nant effectively, and be able to take advantage
of
what new builds of Nant offers easily, you need to start taking into
consideration just how easy is going to migrate to a new build, and that
takes far more than simply ensuring the .build files are valid.

Again, after the 1.0 release, I would agree with this. But prior to that,
ease of use, and adoption are IMHO more important goals. NAnt has the
potential to be *the* definitive build tool for the .NET platform, but it
won't be if it isn't as easy to use, understand, and install as possible.
Constraining these with backward compatibility issues before the 1.0
release will make this a lot less likely to happen.

NAnt has a much bigger hill to climb than Ant ever did to become a standard
in the MS world. We at ThoughtWorks are engaged with clients who are
looking for build solutions for .NET, and we are pushing NAnt as the answer
to their needs. Right now the biggest barrier to adoption are things like
the NAntContrib problem, the ease of use of VS -- not backward
compatibility. Some of them want to see a 1.0 version before they will
adopt. All of them want a simple turnkey installation, and a clear
architecture. Finding the best solution to NAnt's architectural and
deployment needs IMO outweighs backward compatibility at this time if NAnt
is going to have wide appeal in the VS-dominated world of the MS shops out
there. I would rather see radical changes in the code base as the NAnt
developers improve the design, than see them stop short of optimal in the
name of backward compatibility for what test versions of the code base
(which is clear by the lack of 1.0 designation, and the attitude of the
project members).

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.

Its the foolish cat that looks at the finger when it is pointing at the
food






---
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa0016ave/direct;at.asp_061203_01/01
___
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers


Re: [nant-dev] FW: Upcoming 0.8.3 release

2003-06-26 Thread William E Caputo




Matt:
Is it alright to do a couple of pre-0.8.3 builds before the real one (at
least one)?

In light of this, and Gert's request to fit more features in before
releasing, I wonder if NAnt might not benefit from doing time-boxed,
instead of feature-boxed releases. If the project were to release an update
every n weeks, then it wouldn't matter so much if features didn't make the
cut (Gert's suggestion) since they will be in the next release in say 3
weeks, while bug fixes and other issue resolution (i.e. Matt's pre-release
versions) can have numbered builds of 0.8.2.x (allowing you to mark 0.8.3
as the stablest version since 8.2 and then starting again with 0.8.3.x)

Of course this would put additional importance on keeping the tests passing
all the time (and having more tests), but that is probably not a bad thing.

Just a suggestion.

Best,
Bill

William E. Caputo
ThoughtWorks, Inc.

Its the foolish cat that looks at the finger when it is pointing at the
food






---
This SF.Net email is sponsored by: INetU
Attention Web Developers  Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php
___
nant-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/nant-developers