ITaskItem destinationFolder;
bool skipUnchangedFiles;
ITaskItem[] sourceFiles;
+ bool overwriteReadOnlyFiles;
public Copy ()
{
}
}
+#if NET_3_5 || NET_4_0
+ public bool OverwriteReadOnlyFiles {
+ get {
+ return overwriteReadOnlyFiles;
+ }
+ set {
+ overwriteReadOnlyFiles = value;
+ }
+ }
+#endif
+
[Required]
public ITaskItem[] SourceFiles {
get {
{
if (create_dir)
CreateDirectoryIfRequired (Path.GetDirectoryName (dest));
+ if (overwriteReadOnlyFiles)
+ ClearReadOnlyAttribute (dest);
Log.LogMessage ("Copying file from '{0}' to '{1}'", source, dest);
if (String.Compare (source, dest) != 0)
File.Copy (source, dest, true);
+ ClearReadOnlyAttribute (dest);
+ }
+
+ void ClearReadOnlyAttribute (string name)
+ {
+ if (File.Exists (name) && ((File.GetAttributes (name) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly))
+ File.SetAttributes (name, FileAttributes.Normal);
}
bool HasFileChanged (string source, string dest)
FileInfo destinationInfo = new FileInfo (dest);
return !(sourceInfo.Length == destinationInfo.Length &&
- File.GetLastWriteTime(source) <= File.GetLastWriteTime (dest));
+ File.GetLastWriteTime (source) <= File.GetLastWriteTime (dest));
}
}