Merge pull request #799 from kebby/master
[mono.git] / mcs / class / Microsoft.Build.Tasks / Microsoft.Build.Tasks / Delete.cs
index 291ea93f60fdcab9a3c38fce9c587c706877e873..0497fd8550c061f0615a523306577713640719f1 100644 (file)
@@ -36,27 +36,33 @@ using Microsoft.Build.Framework;
 namespace Microsoft.Build.Tasks {
        public sealed class Delete : TaskExtension {
        
-               ITaskItem[]     deletedFiles;
-               ITaskItem[]     files;
+               ITaskItem []    deletedFiles;
+               ITaskItem []    files;
                bool            treatErrorsAsWarnings;
                
                public Delete ()
                {
-                       this.treatErrorsAsWarnings = false;
+                       treatErrorsAsWarnings = false;
                }
 
                public override bool Execute ()
                {
+                       if (files.Length == 0)
+                               return true;
+
                        List <ITaskItem> temporaryDeletedFiles = new List <ITaskItem> ();
                
                        foreach (ITaskItem file in files) {
+                               string path = file.GetMetadata ("FullPath");
+                               if (path == null || !File.Exists (path))
+                                       //skip
+                                       continue;
+
                                try {
-                                       File.Delete (file.GetMetadata ("FullPath"));
+                                       File.Delete (path);
+                                       Log.LogMessage (MessageImportance.Normal, "Deleting file '{0}'", path);
                                        temporaryDeletedFiles.Add (file);
                                }
-                               catch (ArgumentNullException ex) {
-                                       LogException (ex);
-                               }
                                catch (ArgumentException ex) {
                                        LogException (ex);
                                }
@@ -85,43 +91,31 @@ namespace Microsoft.Build.Tasks {
                        return true;
                }
                
-               private void LogException (Exception ex)
+               void LogException (Exception ex)
                {
-                       if (treatErrorsAsWarnings == true)
+                       if (treatErrorsAsWarnings)
                                Log.LogWarningFromException (ex);
                        else
                                Log.LogErrorFromException (ex);
                }
 
                [Output]
-               public ITaskItem[] DeletedFiles {
-                       get {
-                               return deletedFiles;
-                       }
-                       set {
-                               deletedFiles = value;
-                       }
+               public ITaskItem [] DeletedFiles {
+                       get { return deletedFiles; }
+                       set { deletedFiles = value; }
                }
 
                [Required]
-               public ITaskItem[] Files {
-                       get {
-                               return files;
-                       }
-                       set {
-                               files = value;
-                       }
+               public ITaskItem [] Files {
+                       get { return files; }
+                       set { files = value; }
                }
 
                public bool TreatErrorsAsWarnings {
-                       get {
-                               return treatErrorsAsWarnings;
-                       }
-                       set {
-                               treatErrorsAsWarnings = value;
-                       }
+                       get { return treatErrorsAsWarnings; }
+                       set { treatErrorsAsWarnings = value; }
                }
        }
 }
 
-#endif
\ No newline at end of file
+#endif