I'm pretty sure when you are already in an evaluation block you don't
need to nest them. Try this:
<echo message="${file::copy-file-contents(scriptfile,fix.name}" />
BOb
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Craig
Callender
Sent: Wednesday, August 02, 2006 1:52 PM
To: [email protected]
Subject: [NAnt-users] Passing nant properties as paramaters to a
function?
I have a rather simple build example below:
<project name="Test" default="build.compress">
<property name="build.folder" value="Build" />
<property name="fix.name" value=".\text.txt" />
<!-- This target compresses the JavaScript files -->
<target name="build.compress">
<ifnot test="${file::write-file('.\test.txt', '<%@ Page
language="c#" AutoEventWireup="false"%><%@
Import Namespace="JobTraQResources"%>')}">
<fail message='Could not write ScriptScanFix.js.aspx file
header.' />
</ifnot>
<foreach item="File" property="scriptfile">
<in>
<items>
<include name="${build.folder}\*.js" />
<include name="${build.folder}\*.js.aspx" />
<include name="${build.folder}\clientscripts\*.js" />
<include
name="${build.folder}\clientscripts\*.js.aspx" />
</items>
</in>
<do>
<exec program="cscript">
<arg value="CompressScript.wsf" />
<arg value="-s" />
<arg value="-l" />
<arg value="2" />
<arg value="-ow" />
<arg file="${scriptfile}" />
<arg file="${scriptfile}" />
</exec>
<echo
message="${file::copy-file-contents('${scriptfile}', '${fix.name}')}" />
</do>
</foreach>
</target>
<!-- This script starts creating the ScriptScanFix.js.aspx file -->
<script language="C#" prefix="file" >
<references>
<include name="System" />
</references>
<imports>
<import namespace="System.IO" />
<import namespace="System.Text" />
</imports>
<code>
<![CDATA[
[Function("write-file")]
public static bool WriteFile(string FileName, string
FileContents)
{
try
{
FileStream Out = new FileStream(FileName,
FileMode.Append, FileAccess.Write, FileShare.ReadWrite, 8, true);
Out.Write(ASCIIEncoding.ASCII.GetBytes(FileContents + "\r\n"), 0,
ASCIIEncoding.ASCII.GetByteCount(FileContents + "\r\n"));
Out.Close();
return(true);
}
catch (Exception err)
{
return(false);
}
}
]]>
<![CDATA[
[Function("copy-file-contents")]
public static string CopyFileContents(string SourceFile,
string DestinationFile)
{
try
{
string FileContents =
File.OpenText(SourceFile).ReadToEnd();
WriteFile(DestinationFile, FileContents);
return("true");
}
catch (Exception err)
{
return(".NET: " + err.Message);
}
}
]]>
</code>
</script>
</project>
My main problem comes from the fact that I am trying to do this:
<echo message="${file::copy-file-contents('${scriptfile}',
'${fix.name}')}" />
Where I call the function copy-file-contents and I want to pass in the
values of scriptfile and fix.name. But I can't. I can't figure out how
to actually pass in those values and not their name. Any ideas?
------------------------------------------------------------------------
-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share
your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE
V
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users