Merge pull request #3631 from slide/bz44714
[mono.git] / mcs / class / Microsoft.Build.Tasks / Microsoft.Build.Tasks / CombinePath.cs
index 68cd095d33b884536db93a76889eef3011a7195a..98f16e72f6cf4d615cb1f4f0aa1b992d47ca358c 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-#if NET_2_0
 
 using System;
+using System.Collections.Generic;
+using System.IO;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
 
@@ -35,9 +36,9 @@ namespace Microsoft.Build.Tasks {
        [MonoTODO]
        public class CombinePath : TaskExtension {
        
-               string          basePath;
-               ITaskItem[]     combinedPaths;
-               ITaskItem[]     paths;
+               string          base_path;
+               ITaskItem []    combined_paths;
+               ITaskItem []    paths;
                
                public CombinePath ()
                {
@@ -45,26 +46,38 @@ namespace Microsoft.Build.Tasks {
                
                public override bool Execute ()
                {
+                       if (paths.Length == 0)
+                               return true;
+
+                       List <ITaskItem> combined = new List <ITaskItem> ();
+
+                       foreach (ITaskItem path in paths)
+                               if (String.IsNullOrEmpty (base_path))
+                                       combined.Add (path);
+                               else
+                                       combined.Add (new TaskItem (Path.Combine (base_path, path.ItemSpec)));
+
+                       combined_paths = combined.ToArray ();
+                       
                        return true;
                }
                
                public string BasePath {
-                       get { return basePath; }
-                       set { basePath = value; }
+                       get { return base_path; }
+                       set { base_path = value; }
                }
                
                [Output]
-               public ITaskItem[] CombinedPaths {
-                       get { return combinedPaths; }
-                       set { combinedPaths = value; }
+               public ITaskItem [] CombinedPaths {
+                       get { return combined_paths; }
+                       set { combined_paths = value; }
                }
                
                [Required]
-               public ITaskItem[] Paths {
+               public ITaskItem [] Paths {
                        get { return paths; }
                        set { paths = value; }
                }
        }
 }
 
-#endif
\ No newline at end of file