protected virtual void DoFileOperations()
{
int fileCount = FileCopyMap.Count;
if (fileCount > 0 || Verbose) {
if (ToFile != null) {
Log(Level.Info, "Copying {0} file{1} to '{2}'.", fileCount, (fileCount != 1) ? "s" : "", ToFile);
} else {
Log(Level.Info, "Copying {0} file{1} to '{2}'.", fileCount, (fileCount != 1) ? "s" : "", ToDirectory);
}
// loop thru our file list
foreach (DictionaryEntry fileEntry in FileCopyMap) {
string destinationFile = (string) fileEntry.Key;
string sourceFile = ((FileDateInfo) fileEntry.Value).Path;
if (sourceFile == destinationFile) {
Log(Level.Verbose, "Skipping self-copy of '{0}'.", sourceFile);
continue;
}
try {
Log(Level.Verbose, "Copying '{0}' to '{1}'.", sourceFile, destinationFile);
// create directory if not present
string destinationDirectory = Path.GetDirectoryName(destinationFile);
if (!Directory.Exists(destinationDirectory)) {
Directory.CreateDirectory(destinationDirectory);
Log(Level.Verbose, "Created directory '{0}'.", destinationDirectory);
}
// copy the file with filters
FileUtils.CopyFile(sourceFile, destinationFile, Filters,
InputEncoding, OutputEncoding);
} catch (Exception ex) {
throw new BuildException(string.Format(CultureInfo.InvariantCulture,
"Cannot copy '{0}' to '{1}'.", sourceFile, destinationFile),
Location, ex);
}
}
}
}