Thanks Bob, thats great. Yes nantcontrib-developer is the right place for this stuff.
Ian
Sunday, December 7, 2003, 11:23:16 PM, you wrote:
I've just checked in a p4sync task into nantcontrib. Please grab a nightly and try it out. More p4 tasks to come - add, submit etc.
Works like a charm! I had to tweak the build file (patch attached) and build NAntContrib CVS head with .NET 1.0 -- couldn't figure out how to work around build errors with .NET 1.1. Once I got it built, though, everything was fine.
I got as far in my own efforts as to build a base class with support for Ant's p4.{port|client|user|passwd} properties. I figure it'll be useful in producing buildfiles that work on both developer boxes and build machines. Is that level of compatibility with Ant's Perforce tasks -- http://ant.apache.org/manual/OptionalTasks/perforce.html -- something of interest? Or with Ant tasks in general?
I also attached a minimal p4print task. We use it to fetch a clientspec file and feed it to 'p4 client -i' so that's the next task I'll work on. (Maybe after flush -- another one we use.) Should I send them to nantcontrib-developer?
--
sig://boB
http://foobob.com
------------------------------------------------------------------------
// 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 // // Bob Arnson ([EMAIL PROTECTED])
using System; using System.Text; using NAnt.Core; using NAnt.Core.Util; using NAnt.Core.Tasks; using NAnt.Core.Attributes;
namespace NAnt.Contrib.Tasks.Perforce {
/// <summary>
/// Fetch a specific file from a Perforce depot without needing a clientspec to map it. Wraps the 'p4 print' command.
/// </summary>
/// <remarks>
/// <para>
/// ///<code>
/// <![CDATA[
///<p4print file="//depot/foo/mainline/clientspec" outputfile=".\clientspec" />
///<p4client input=".\clientspec" />
/// ]]>
/// </code>
/// </para>
/// </remarks>
/// <todo> fileset? </todo>
/// <author> <a href="mailto:[EMAIL PROTECTED]">Bob Arnson</a></author>
[TaskName("p4print")]
public class P4Print : P4Base {
#region Private Instance Fields
private string _file = null;
private string _outputFile = null;
#endregion Private Instance Fields
#region Public Instance Properties
/// <summary> /// The depot or local filename (including optional path) of the file to fetch; required
/// </summary>
[TaskAttribute("file", Required = true)]
public string File {
get { return _file; }
set { _file = StringUtils.ConvertEmptyToNull(value); }
} /// <summary> /// The local filename to write the fetched file to; required
/// </summary>
[TaskAttribute("outputfile", Required = true)]
public string P4OutputFile {
get { return _outputFile; }
set { _outputFile = StringUtils.ConvertEmptyToNull(value); }
} #endregion Public Instance Properties
/// <summary>
/// This is an override used by the base class to get command specific args.
/// </summary>
protected override string CommandSpecificArguments {
get { return getSpecificCommandArguments(); }
}
#region Override implementation of Task
/// <summary>
/// local method to build the command string for this particular command
/// </summary>
/// <returns></returns>
protected string getSpecificCommandArguments( ) {
StringBuilder arguments = new StringBuilder();
arguments.Append("-s print -q ");
arguments.Append(string.Format("-o {0} ", P4OutputFile));
arguments.Append(File);
return arguments.ToString();
}
#endregion Override implementation of Task
}
}
--
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/ _______________________________________________ NAntContrib-Developer mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/nantcontrib-developer