Hi, I had a problem where I merge sourcefiles into one assembly, while I use them normally in more than one assembly to link only what I need.
I'm using the ndoc task to document, and hence it's missing the namespace descriptions, if I do not create a new namespace.xml for the merged assembly. Basicly appending all namespace.xml files from the seperated assemblies into one new would do the job. I would do this with cat under unix, but I found it nice to have a task doing this. There are three attributes: * file * pipe * append The last two are optional. The first one is the file to cat. If this is the only attribute given, it will print it on the screen. If pip is given, it will create - that means overwrite, since append defaults to false - the given file and insert the contents of file. If append is true the content is appended where I've reached what I wanted. I just think I post it here for inclusion in NAnt or NAnt-contrib. -sa -- sa at programmers-world dot com http://www.livingit.de Bookmarks online: http://www.mobile-bookmarks.info Soon available in english Life would be so much easier if we could just look at the source code.
// NAnt - A .NET build tool // Copyright (C) 2001-2002 Gerry Shaw // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // Sascha Andres ([EMAIL PROTECTED]) using System; using System.Globalization; using System.Xml; using System.IO; using NAnt.Core.Attributes; using NAnt.Core.Util; namespace NAnt.Core.Tasks { /// <summary> /// A somehow compareable task to 'cat' from a unix/linux system /// </summary> /// <example> /// <para>Prints a file on the screen</para> /// <code> /// <![CDATA[ /// <cat file="input.txt" /> /// ]]> /// </code> /// <para>Prints a file to an other file. Overwrite is the default!</para> /// <code> /// <![CDATA[ /// <cat file="input.txt" pipe="output.txt" /> /// ]]> /// </code> /// <para>Prints two files to one other file.</para> /// <code> /// <![CDATA[ /// <cat file="input.txt" pipe="output.txt" /> /// <cat file="input2.txt" pipe="output.txt" append="true" /> /// ]]> /// </code> /// </example> [TaskName("cat")] public class CatTask : Task { #region Private Instance Fields private string _filein = ""; private string _fileout = ""; private string _append = Boolean.FalseString; #endregion Private Instance Fields #region Public Instance Properties /// <summary> /// The file to display. /// </summary> [TaskAttribute("file", Required=true)] public string File { get { return _filein; } set { _filein = value; } } /// <summary> /// Write the output to /// </summary> [TaskAttribute("pipe", Required=false)] public string Pipe { get { return _fileout; } set { _fileout = value; } } /// <summary> /// Append to file /// </summary> [TaskAttribute("append", Required=false)] [BooleanValidator()] public string Append { get { return _append; } set { _append = value; } } #endregion Public Instance Properties #region Override implementation of Task /// <summary> /// Outputs the message to the build log. /// </summary> protected override void ExecuteTask() { bool bUseFile = false; using (StreamReader sr = new StreamReader(_filein)) { StreamWriter sw = null; if (_fileout != "") { bUseFile = true; sw = new StreamWriter(_fileout, Convert.ToBoolean(_append)); } while(true) { string strLine = sr.ReadLine(); if (strLine == null) { break; } if (!bUseFile) { Log(Level.Info, LogPrefix + strLine); } else { sw.WriteLine(strLine); } } if (bUseFile) { sw.Flush(); sw.Close(); sw = null; } } } #endregion Override implementation of Task } }