#region "Nant Copyright notice"
// 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
//
// Clayton Harbour (claytonharbour@sporadicism.com)
#endregion
using System;
using System.IO;
using NAnt.Core.Tasks;
using NAnt.Core.Attributes;
using ICSharpCode.SharpCvsLib.Commands;
using ICSharpCode.SharpCvsLib.Misc;
using ICSharpCode.SharpCvsLib.FileSystem;
using log4net;
namespace NAnt.Cvs.Tasks {
///
///
/// Updates the module in the specified working directory.
///
///
///
/// Update nant.
/// <cvs-update destination="c:\src\nant\" cvsroot=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/nant" password="" module="nant" />
/// Checkout your favorite build tool to the specified directory.
///
///
/// ]]>
///
///
///
[TaskName("cvs-update")]
public class UpdateTask : AbstractCvsTask {
private readonly ILog LOGGER = LogManager.GetLogger (typeof (UpdateTask));
///
///
///
public UpdateTask() {
}
///
/// Creates an instance of the update command.
///
/// An instance of the update command.
protected override ICommand CreateCommand () {
this.PopulateFolders (this.Working);
return
new UpdateCommand2 (this.Working);
}
///
/// Create a list of files that need to be compared
/// against the server and then updated.
///
/// The directory to
/// use in the comparison.
///
private void PopulateFolders (WorkingDirectory workingDirectory) {
if (LOGGER.IsDebugEnabled) {
String msg = "Reading all the working directory entries. " +
"workingDirectory=[" + workingDirectory + "]";
LOGGER.Debug (msg);
}
Manager manager = new Manager ();
String updateAll = Path.Combine (this.Destination, this.Module);
workingDirectory.FoldersToUpdate =
manager.FetchFilesToUpdate (updateAll);
}
}
}