Bob, et. al.,
I grabbed the install image for CI Factory and scoured the code. It appears
like the developers have implemented A LOT of Nant extensions that could be
useful, including a <largeproperty> element. As far as I can tell so far,
<largeproperty> supports both direct XML plain text, or CDATA string content.
XML content is indicated by a property option. There is also an option for
Nant style expansion ( ${ . } ) within the content upon reference.
In the CI Factory Nant extension library, there appear as well to be some
advanced XML parsing and generation tasks via functions which are more or less
a pass through to the XmlTextReader / XmlTextWriter in the .NET libraries. I
also noticed a reference to an <ifthenelse> task-could be interesting.
In looking through their scripts, it appears that they use the <largeproperty>
a great deal for generation of HTML code for error messages, e-mail and
auto-generated web pages. But, I believe that any well-formed XML will work.
The question yet to be answered yet is whether there is a practical way to
parse the <largeproperty> content in a Nant script, to selectively retrieve
portions of it. If so, <largeproperty> could be used to pass around structured
data. In my case, I simply want to embed structured data in a Nant script that
will be parsed by an external program.
I haven't tried these out yet, but I'm going to try dumping the CI Factory Nant
extension DLL in my Nant directory and see if I can get this to work. I will
also contact the developers and see if I can get the source code to their Nant
extension library so we could extract portions as needed.
Ken Parrish
Gomez, Inc.
Examples culled from their scripts:
<largeproperty name="Alerts.SendMessage.Content">
<value expand="true" xml="true">
<html>
<head>
</head>
<body>
<p>${datetime::now()}</p>
<p>
<a href="${UrlToThisBuild}">${CCNetLabel}</a>
</p>
<p>${Alerts.Developer.Name},</p>
<p>Thank you for reducing the number of lines of code from
${Alerts.ChangePackageSize.Previous.LineCount} to
${Alerts.ChangePackageSize.LineCount}.</p>
<br/>
<p>Cheers,</p>
<p>Your pal, the build server.</p>
</body>
</html>
</value>
</largeproperty>
<largeproperty name="Packages.AddCleanUpActions.Block">
<value xml="false">
<![CDATA[<call target="SourceControl.CleanGetOfThirdPartyDirectory" />
<call target="SourceControl.CleanGetOfProductDirectory" />]]>
</value>
</largeproperty>
From: Bob Archer [mailto:[email protected]]
Sent: Wednesday, June 24, 2009 10:37 AM
To: Parrish, Ken; [email protected]
Subject: RE: Embedded XML in Nant scripts ...
CI Factory has a "largestring" property which allows you to embed XML IIRC
correctly. You may be able to snag it.
BOb
From: Parrish, Ken [mailto:[email protected]]
Sent: Wednesday, June 24, 2009 9:47 AM
To: [email protected]
Subject: [NAnt-users] Embedded XML in Nant scripts ...
I have a need to embed 'extra' information in a Nant script. We've developed a
configuration management database and have various crawlers and update engines,
one of which parses existing Nant scripts collecting configuration management
data embedded as <properties> in our build scripts.
There are occasions when it would be useful to insert additional information in
a build script beyond using just properties. In particular, snippets of
structured XML. I'm using the .NET XMLDocument parser and model to interrogate
these scripts.
Is there any practical way to embed 'auxilliary' snippets of XML in a Nant
script? Does anyone have any other ideas for incorporating snippets of XML in
a Nant script?
Thanks,
Ken Parrish
Gomez, Inc.
------------------------------------------------------------------------------
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users