From: Clayton H. <dr...@us...> - 2004-11-10 08:33:53
|
Update of /cvsroot/nant/nant/src/NAnt.SourceControl/Tasks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17027/src/NAnt.SourceControl/Tasks Modified Files: AbstractCvsTask.cs AbstractSourceControlTask.cs ChangeLogTask.cs Added Files: CvsPass.cs Log Message: Bug fixes, added cvs-pass task to append/ update a .cvspass file. --- NEW FILE: CvsPass.cs --- // NAnt - A .NET build tool // Copyright (C) 2001-2003 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 // // Clayton Harbour (cla...@sp...) using System; using System.Text; using System.IO; using System.Diagnostics; using NAnt.Core; using NAnt.Core.Attributes; using NAnt.Core.Tasks; using NAnt.Core.Types; using NAnt.Core.Util; using ICSharpCode.SharpCvsLib.Commands; namespace NAnt.SourceControl.Tasks { /// <summary> /// Executes the cvs login command which appends or updates an entry to the /// specified .cvspass file. /// </summary> /// <example> /// <para>Update .cvspass file to include the NAnt anonymous login.</para> /// <code> /// <![CDATA[ /// <cvs cvsroot=":pserver:ano...@cv...:/cvsroot/nant" /// password="anonymous" /// passfile="C:\.cvspass" /> /// ]]> /// </code> /// </example> [TaskName("cvs-pass")] public class CvsPass : AbstractCvsTask { #region Private Instance Fields private static readonly log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private FileInfo _passwordfile; private string _password; #endregion #region Public Instance Properties /// <summary> /// The cvs command to execute. /// </summary> public override string CommandName { get {return "login";} } /// <summary> /// Password to append or update to the .cvspass file. /// </summary> [TaskAttribute("password", Required=true)] public new string Password { get { return this._password; } set { this._password = value; } } /// <summary> /// Full path to the .cvspass file. /// </summary> /// <value>Defaults to ~/.cvspass.</value> [TaskAttribute("passfile", Required=false)] public FileInfo Passwordfile { get { return this._passwordfile; } set { this._passwordfile = value; } } /// <summary> /// Specify if the module is needed for this cvs command. /// </summary> protected override bool IsModuleNeeded { get { return false; } } /// <summary> /// Update the .cvspass file with the given password. /// </summary> protected override void ExecuteTask () { ICSharpCode.SharpCvsLib.FileSystem.Manager manager = new ICSharpCode.SharpCvsLib.FileSystem.Manager(this.DestinationDirectory); Log(Level.Verbose, "Updating .cvspass file '{0}'.", this.Passwordfile.FullName); manager.UpdatePassFile(this.Password, new ICSharpCode.SharpCvsLib.Misc.CvsRoot(this.Root)); } #endregion } } Index: AbstractCvsTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.SourceControl/Tasks/AbstractCvsTask.cs,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** AbstractCvsTask.cs 25 Oct 2004 05:56:03 -0000 1.51 --- AbstractCvsTask.cs 10 Nov 2004 08:33:43 -0000 1.52 *************** *** 30,33 **** --- 30,36 ---- using NAnt.Core.Util; + using ICSharpCode.SharpCvsLib.FileSystem; + using ICSharpCode.SharpCvsLib.Exceptions; + namespace NAnt.SourceControl.Tasks { /// <summary> *************** *** 250,257 **** /// </code> /// </example> ! [TaskAttribute("cvsroot", Required=true)] [StringValidator(AllowEmpty=false)] public override string Root { ! get { return base.Root; } set { base.Root = StringUtils.ConvertEmptyToNull(value); } } --- 253,278 ---- /// </code> /// </example> ! [TaskAttribute("cvsroot", Required=false)] [StringValidator(AllowEmpty=false)] public override string Root { ! get { ! if (null == base.Root) { ! Manager manager = ! new Manager(this.DestinationDirectory.FullName); ! try { ! Root root = manager.FetchRoot(this.DestinationDirectory.FullName); ! this.Root = root.FileContents; ! } catch (CvsFileNotFoundException) { ! try { ! Root root = manager.FetchRoot(Path.Combine(this.DestinationDirectory.FullName, "CVS")); ! this.Root = root.FileContents; ! } catch (CvsFileNotFoundException) { ! throw new BuildException (string.Format("Cvs/Root file not found in {0}, please perform a checkout.", ! this.DestinationDirectory.FullName)); ! } ! } ! } ! return base.Root; ! } set { base.Root = StringUtils.ConvertEmptyToNull(value); } } *************** *** 269,275 **** /// </example> [TaskAttribute("module", Required=false)] ! [StringValidator(AllowEmpty=false, Expression=@"^[A-Za-z0-9][A-Za-z0-9._\-]*$")] public string Module { ! get { return _module; } set { _module = StringUtils.ConvertEmptyToNull(value); } } --- 290,314 ---- /// </example> [TaskAttribute("module", Required=false)] ! [StringValidator(AllowEmpty=true, Expression=@"^[A-Za-z0-9][A-Za-z0-9._\-]*$")] public string Module { ! get { ! if (null == _module) { ! Manager manager = ! new Manager(this.DestinationDirectory.FullName); ! try { ! Repository repository = manager.FetchRepository(this.DestinationDirectory.FullName); ! this._module = repository.ModuleName; ! } catch (CvsFileNotFoundException) { ! try { ! Repository repository = manager.FetchRepository(Path.Combine(this.DestinationDirectory.FullName, "CVS")); ! this._module = repository.ModuleName; ! } catch (CvsFileNotFoundException) { ! throw new BuildException (string.Format("Cvs/Repository file not found in {0}, please perform a checkout.", ! this.DestinationDirectory.FullName)); ! } ! } ! } ! return _module; ! } set { _module = StringUtils.ConvertEmptyToNull(value); } } *************** *** 306,310 **** /// </example> [TaskAttribute("usesharpcvslib", Required=false)] ! public bool UseSharpCvsLib { get {return _useSharpCvsLib;} set { --- 345,349 ---- /// </example> [TaskAttribute("usesharpcvslib", Required=false)] ! public virtual bool UseSharpCvsLib { get {return _useSharpCvsLib;} set { Index: AbstractSourceControlTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.SourceControl/Tasks/AbstractSourceControlTask.cs,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** AbstractSourceControlTask.cs 21 Jul 2004 11:51:45 -0000 1.17 --- AbstractSourceControlTask.cs 10 Nov 2004 08:33:43 -0000 1.18 *************** *** 164,168 **** /// <summary> ! /// Destination directory for the local sandbox. /// </summary> /// <value> --- 164,169 ---- /// <summary> ! /// Destination directory for the local sandbox. If destination is not specified ! /// then the current directory is used. /// </summary> /// <value> *************** *** 174,181 **** /// </para> /// </remarks> ! [TaskAttribute("destination", Required=true)] ! public DirectoryInfo DestinationDirectory { ! get { return _destinationDirectory; } ! set { _destinationDirectory = value; } } --- 175,187 ---- /// </para> /// </remarks> ! [TaskAttribute("destination", Required=false)] ! public virtual DirectoryInfo DestinationDirectory { ! get { ! if (null == this._destinationDirectory) { ! this._destinationDirectory = new DirectoryInfo(Environment.CurrentDirectory); ! } ! return this._destinationDirectory; ! } ! set { this._destinationDirectory = value; } } *************** *** 187,190 **** --- 193,197 ---- /// </value> [TaskAttribute("password", Required=false)] + [Obsolete("Use <cvs-pass> task instead.", false)] public virtual string Password { get { return _password;} Index: ChangeLogTask.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.SourceControl/Tasks/ChangeLogTask.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ChangeLogTask.cs 21 Oct 2004 06:33:05 -0000 1.5 --- ChangeLogTask.cs 10 Nov 2004 08:33:43 -0000 1.6 *************** *** 80,83 **** --- 80,91 ---- /// <summary> + /// Override use of sharpcvslib, needs to be true. + /// </summary> + public override bool UseSharpCvsLib { + get {return true;} + set {/* can only use sharpcvslib for changelog */} + } + + /// <summary> /// Name of the xml file that will contain the cvs log information. /// </summary> |