|
1 | 1 | using System; |
2 | 2 | using System.IO; |
3 | 3 | using System.Collections.Generic; |
| 4 | +using System.Linq; |
4 | 5 |
|
5 | 6 | using Microsoft.Build.Framework; |
6 | 7 | using Microsoft.Build.Utilities; |
7 | 8 |
|
8 | 9 | using Xamarin.MacDev.Tasks; |
9 | 10 | using Xamarin.Localization.MSBuild; |
| 11 | +using Xamarin.Messaging.Build.Client; |
| 12 | + |
| 13 | +#nullable enable |
10 | 14 |
|
11 | 15 | namespace Xamarin.MacDev.Tasks { |
12 | | - public abstract class GetFilesTaskBase : XamarinTask { |
| 16 | + public abstract class GetFiles : XamarinTask, ITaskCallback, ICancelableTask { |
13 | 17 | [Required] |
14 | | - public string Path { get; set; } |
| 18 | + public string Path { get; set; } = string.Empty; |
15 | 19 |
|
16 | | - public string Pattern { get; set; } |
| 20 | + public string Pattern { get; set; } = string.Empty; |
17 | 21 |
|
18 | | - public string Option { get; set; } |
| 22 | + public string Option { get; set; } = string.Empty; |
19 | 23 |
|
20 | | - public string Exclude { get; set; } |
| 24 | + public string Exclude { get; set; } = string.Empty; |
21 | 25 |
|
22 | 26 | [Output] |
23 | | - public ITaskItem [] Files { get; set; } |
| 27 | + public ITaskItem [] Files { get; set; } = Array.Empty<ITaskItem> (); |
24 | 28 |
|
25 | 29 | public override bool Execute () |
26 | 30 | { |
| 31 | + if (ShouldExecuteRemotely ()) |
| 32 | + return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result; |
| 33 | + |
27 | 34 | var path = Path.Replace ('\\', '/').TrimEnd ('/'); |
28 | 35 | var exclude = new HashSet<string> (); |
29 | 36 | var items = new List<ITaskItem> (); |
@@ -66,5 +73,17 @@ public override bool Execute () |
66 | 73 |
|
67 | 74 | return !Log.HasLoggedErrors; |
68 | 75 | } |
| 76 | + |
| 77 | + public IEnumerable<ITaskItem> GetAdditionalItemsToBeCopied () => Enumerable.Empty<ITaskItem> (); |
| 78 | + |
| 79 | + public bool ShouldCopyToBuildServer (ITaskItem item) => false; |
| 80 | + |
| 81 | + public bool ShouldCreateOutputFile (ITaskItem item) => false; |
| 82 | + |
| 83 | + public void Cancel () |
| 84 | + { |
| 85 | + if (ShouldExecuteRemotely ()) |
| 86 | + BuildConnection.CancelAsync (BuildEngine4).Wait (); |
| 87 | + } |
69 | 88 | } |
70 | 89 | } |
0 commit comments