2 * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.Collections.Generic;
20 using Microsoft.Build.Framework;
21 using Microsoft.Build.Utilities;
23 namespace GenDummy.Tasks
25 public class GenDummyTask : ITask
27 readonly List<ITaskItem> _generatedFiles = new List<ITaskItem>();
29 public IBuildEngine BuildEngine { get; set; }
30 public ITaskHost HostObject { get; set; }
33 public ITaskItem[] Sources { get; set; }
36 public string OutputDirectory { get; set; }
39 public ITaskItem[] GeneratedFiles => _generatedFiles.ToArray();
48 Console.Error.WriteLine($"{e.ToString()} : {e.Message}");
54 public async System.Threading.Tasks.Task ExecuteCore()
56 if (string.IsNullOrEmpty(OutputDirectory))
58 throw new ArgumentException("OutputDirectory is not set.");
61 DummyProject project = new DummyProject();
63 foreach (var source in Sources)
65 string sourceFile = source.ItemSpec;
66 if (!File.Exists(sourceFile))
68 throw new FileNotFoundException(sourceFile);
71 string generatedFile = Path.Combine(OutputDirectory, sourceFile);
73 string targetDirectory = Path.GetDirectoryName(generatedFile);
74 Directory.CreateDirectory(targetDirectory);
76 await project.GenerateDummy(source.ItemSpec, generatedFile);
77 _generatedFiles.Add(new TaskItem(generatedFile));