aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2020-06-08 16:25:38 -0700
committerRob Mensching <rob@firegiant.com>2020-06-08 16:37:14 -0700
commit04b8976ca565ce95cf32a58c8725843618724383 (patch)
tree72cf07a394f193a49afcba9bac89647e3b0a0922 /src
parent3fb889ab7aa3cb0dfae23e0379e28552e919ad72 (diff)
downloadwix-04b8976ca565ce95cf32a58c8725843618724383.tar.gz
wix-04b8976ca565ce95cf32a58c8725843618724383.tar.bz2
wix-04b8976ca565ce95cf32a58c8725843618724383.zip
Make commands async and internal processes cancelable
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunner.cs11
-rw-r--r--src/WixToolset.Core/BindContext.cs4
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs45
-rw-r--r--src/WixToolset.Core/CommandLine/CompileCommand.cs12
-rw-r--r--src/WixToolset.Core/CommandLine/DecompileCommand.cs10
-rw-r--r--src/WixToolset.Core/CommandLine/HelpCommand.cs8
-rw-r--r--src/WixToolset.Core/CommandLine/VersionCommand.cs6
-rw-r--r--src/WixToolset.Core/CompileContext.cs4
-rw-r--r--src/WixToolset.Core/LayoutContext.cs4
-rw-r--r--src/WixToolset.Core/LibraryContext.cs4
-rw-r--r--src/WixToolset.Core/LinkContext.cs4
-rw-r--r--src/WixToolset.Core/PreprocessContext.cs4
-rw-r--r--src/WixToolset.Core/ResolveContext.cs4
13 files changed, 75 insertions, 45 deletions
diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs
index 082e9e10..679956bd 100644
--- a/src/WixToolset.Core.TestPackage/WixRunner.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunner.cs
@@ -4,6 +4,8 @@ namespace WixToolset.Core.TestPackage
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.Threading;
8 using System.Threading.Tasks;
7 using WixToolset.Data; 9 using WixToolset.Data;
8 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
@@ -13,17 +15,18 @@ namespace WixToolset.Core.TestPackage
13 public static int Execute(string[] args, out List<Message> messages) 15 public static int Execute(string[] args, out List<Message> messages)
14 { 16 {
15 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); 17 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
16 return Execute(args, serviceProvider, out messages); 18 var task = Execute(args, serviceProvider, out messages);
19 return task.Result;
17 } 20 }
18 21
19 public static WixRunnerResult Execute(params string[] args) 22 public static WixRunnerResult Execute(params string[] args)
20 { 23 {
21 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider(); 24 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
22 var exitCode = Execute(args, serviceProvider, out var messages); 25 var exitCode = Execute(args, serviceProvider, out var messages);
23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() }; 26 return new WixRunnerResult { ExitCode = exitCode.Result, Messages = messages.ToArray() };
24 } 27 }
25 28
26 public static int Execute(string[] args, IWixToolsetServiceProvider serviceProvider, out List<Message> messages) 29 public static Task<int> Execute(string[] args, IWixToolsetServiceProvider serviceProvider, out List<Message> messages)
27 { 30 {
28 var listener = new TestMessageListener(); 31 var listener = new TestMessageListener();
29 32
@@ -39,7 +42,7 @@ namespace WixToolset.Core.TestPackage
39 commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions); 42 commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions);
40 commandLine.Arguments = arguments; 43 commandLine.Arguments = arguments;
41 var command = commandLine.ParseStandardCommandLine(); 44 var command = commandLine.ParseStandardCommandLine();
42 return command?.Execute() ?? 1; 45 return command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1);
43 } 46 }
44 47
45 private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, string[] extensions) 48 private static IExtensionManager CreateExtensionManagerWithStandardBackends(IWixToolsetServiceProvider serviceProvider, string[] extensions)
diff --git a/src/WixToolset.Core/BindContext.cs b/src/WixToolset.Core/BindContext.cs
index 3d7563c6..47375fb0 100644
--- a/src/WixToolset.Core/BindContext.cs
+++ b/src/WixToolset.Core/BindContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
@@ -55,5 +55,7 @@ namespace WixToolset.Core
55 public bool SuppressValidation { get; set; } 55 public bool SuppressValidation { get; set; }
56 56
57 public bool SuppressLayout { get; set; } 57 public bool SuppressLayout { get; set; }
58
59 public CancellationToken CancellationToken { get; set; }
58 } 60 }
59} 61}
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 8392131f..8602c514 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -6,6 +6,8 @@ namespace WixToolset.Core.CommandLine
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.IO; 7 using System.IO;
8 using System.Linq; 8 using System.Linq;
9 using System.Threading;
10 using System.Threading.Tasks;
9 using System.Xml.Linq; 11 using System.Xml.Linq;
10 using WixToolset.Data; 12 using WixToolset.Data;
11 using WixToolset.Extensibility; 13 using WixToolset.Extensibility;
@@ -54,12 +56,12 @@ namespace WixToolset.Core.CommandLine
54 56
55 private string BuiltOutputsFile { get; set; } 57 private string BuiltOutputsFile { get; set; }
56 58
57 public int Execute() 59 public Task<int> ExecuteAsync(CancellationToken cancellationToken)
58 { 60 {
59 if (this.commandLine.ShowHelp) 61 if (this.commandLine.ShowHelp)
60 { 62 {
61 Console.WriteLine("TODO: Show build command help"); 63 Console.WriteLine("TODO: Show build command help");
62 return -1; 64 return Task.FromResult(-1);
63 } 65 }
64 66
65 this.IntermediateFolder = this.commandLine.CalculateIntermedateFolder(); 67 this.IntermediateFolder = this.commandLine.CalculateIntermedateFolder();
@@ -107,23 +109,23 @@ namespace WixToolset.Core.CommandLine
107 109
108 if (this.Messaging.EncounteredError) 110 if (this.Messaging.EncounteredError)
109 { 111 {
110 return this.Messaging.LastErrorNumber; 112 return Task.FromResult(this.Messaging.LastErrorNumber);
111 } 113 }
112 114
113 var wixobjs = this.CompilePhase(preprocessorVariables, codeFiles); 115 var wixobjs = this.CompilePhase(preprocessorVariables, codeFiles, cancellationToken);
114 116
115 var wxls = this.LoadLocalizationFiles(this.commandLine.LocalizationFilePaths, preprocessorVariables); 117 var wxls = this.LoadLocalizationFiles(this.commandLine.LocalizationFilePaths, preprocessorVariables, cancellationToken);
116 118
117 if (this.Messaging.EncounteredError) 119 if (this.Messaging.EncounteredError)
118 { 120 {
119 return this.Messaging.LastErrorNumber; 121 return Task.FromResult(this.Messaging.LastErrorNumber);
120 } 122 }
121 123
122 if (this.OutputType == OutputType.Library) 124 if (this.OutputType == OutputType.Library)
123 { 125 {
124 using (new IntermediateFieldContext("wix.lib")) 126 using (new IntermediateFieldContext("wix.lib"))
125 { 127 {
126 var wixlib = this.LibraryPhase(wixobjs, wxls, this.commandLine.BindFiles, this.commandLine.BindPaths); 128 var wixlib = this.LibraryPhase(wixobjs, wxls, this.commandLine.BindFiles, this.commandLine.BindPaths, cancellationToken);
127 129
128 if (!this.Messaging.EncounteredError) 130 if (!this.Messaging.EncounteredError)
129 { 131 {
@@ -137,7 +139,7 @@ namespace WixToolset.Core.CommandLine
137 { 139 {
138 if (wixipl == null) 140 if (wixipl == null)
139 { 141 {
140 wixipl = this.LinkPhase(wixobjs, this.commandLine.LibraryFilePaths, creator); 142 wixipl = this.LinkPhase(wixobjs, this.commandLine.LibraryFilePaths, creator, cancellationToken);
141 } 143 }
142 144
143 if (!this.Messaging.EncounteredError) 145 if (!this.Messaging.EncounteredError)
@@ -157,14 +159,14 @@ namespace WixToolset.Core.CommandLine
157 { 159 {
158 using (new IntermediateFieldContext("wix.bind")) 160 using (new IntermediateFieldContext("wix.bind"))
159 { 161 {
160 this.BindPhase(wixipl, wxls, filterCultures, this.commandLine.CabCachePath, this.commandLine.BindPaths); 162 this.BindPhase(wixipl, wxls, filterCultures, this.commandLine.CabCachePath, this.commandLine.BindPaths, cancellationToken);
161 } 163 }
162 } 164 }
163 } 165 }
164 } 166 }
165 } 167 }
166 168
167 return this.Messaging.LastErrorNumber; 169 return Task.FromResult(this.Messaging.LastErrorNumber);
168 } 170 }
169 171
170 public bool TryParseArgument(ICommandLineParser parser, string argument) 172 public bool TryParseArgument(ICommandLineParser parser, string argument)
@@ -210,13 +212,13 @@ namespace WixToolset.Core.CommandLine
210 } 212 }
211 } 213 }
212 214
213 private IEnumerable<Intermediate> CompilePhase(IDictionary<string, string> preprocessorVariables, IEnumerable<SourceFile> sourceFiles) 215 private IEnumerable<Intermediate> CompilePhase(IDictionary<string, string> preprocessorVariables, IEnumerable<SourceFile> sourceFiles, CancellationToken cancellationToken)
214 { 216 {
215 var intermediates = new List<Intermediate>(); 217 var intermediates = new List<Intermediate>();
216 218
217 foreach (var sourceFile in sourceFiles) 219 foreach (var sourceFile in sourceFiles)
218 { 220 {
219 var document = this.Preprocess(preprocessorVariables, sourceFile.SourcePath); 221 var document = this.Preprocess(preprocessorVariables, sourceFile.SourcePath, cancellationToken);
220 222
221 if (this.Messaging.EncounteredError) 223 if (this.Messaging.EncounteredError)
222 { 224 {
@@ -228,6 +230,7 @@ namespace WixToolset.Core.CommandLine
228 context.OutputPath = sourceFile.OutputPath; 230 context.OutputPath = sourceFile.OutputPath;
229 context.Platform = this.Platform; 231 context.Platform = this.Platform;
230 context.Source = document; 232 context.Source = document;
233 context.CancellationToken = cancellationToken;
231 234
232 Intermediate intermediate = null; 235 Intermediate intermediate = null;
233 try 236 try
@@ -251,7 +254,7 @@ namespace WixToolset.Core.CommandLine
251 return intermediates; 254 return intermediates;
252 } 255 }
253 256
254 private Intermediate LibraryPhase(IEnumerable<Intermediate> intermediates, IEnumerable<Localization> localizations, bool bindFiles, IEnumerable<IBindPath> bindPaths) 257 private Intermediate LibraryPhase(IEnumerable<Intermediate> intermediates, IEnumerable<Localization> localizations, bool bindFiles, IEnumerable<IBindPath> bindPaths, CancellationToken cancellationToken)
255 { 258 {
256 var context = this.ServiceProvider.GetService<ILibraryContext>(); 259 var context = this.ServiceProvider.GetService<ILibraryContext>();
257 context.BindFiles = bindFiles; 260 context.BindFiles = bindFiles;
@@ -259,6 +262,7 @@ namespace WixToolset.Core.CommandLine
259 context.Extensions = this.ExtensionManager.GetServices<ILibrarianExtension>(); 262 context.Extensions = this.ExtensionManager.GetServices<ILibrarianExtension>();
260 context.Localizations = localizations; 263 context.Localizations = localizations;
261 context.Intermediates = intermediates; 264 context.Intermediates = intermediates;
265 context.CancellationToken = cancellationToken;
262 266
263 Intermediate library = null; 267 Intermediate library = null;
264 try 268 try
@@ -274,7 +278,7 @@ namespace WixToolset.Core.CommandLine
274 return library; 278 return library;
275 } 279 }
276 280
277 private Intermediate LinkPhase(IEnumerable<Intermediate> intermediates, IEnumerable<string> libraryFiles, ITupleDefinitionCreator creator) 281 private Intermediate LinkPhase(IEnumerable<Intermediate> intermediates, IEnumerable<string> libraryFiles, ITupleDefinitionCreator creator, CancellationToken cancellationToken)
278 { 282 {
279 var libraries = this.LoadLibraries(libraryFiles, creator); 283 var libraries = this.LoadLibraries(libraryFiles, creator);
280 284
@@ -289,12 +293,13 @@ namespace WixToolset.Core.CommandLine
289 context.ExpectedOutputType = this.OutputType; 293 context.ExpectedOutputType = this.OutputType;
290 context.Intermediates = intermediates.Concat(libraries).ToList(); 294 context.Intermediates = intermediates.Concat(libraries).ToList();
291 context.TupleDefinitionCreator = creator; 295 context.TupleDefinitionCreator = creator;
296 context.CancellationToken = cancellationToken;
292 297
293 var linker = this.ServiceProvider.GetService<ILinker>(); 298 var linker = this.ServiceProvider.GetService<ILinker>();
294 return linker.Link(context); 299 return linker.Link(context);
295 } 300 }
296 301
297 private void BindPhase(Intermediate output, IEnumerable<Localization> localizations, IEnumerable<string> filterCultures, string cabCachePath, IEnumerable<IBindPath> bindPaths) 302 private void BindPhase(Intermediate output, IEnumerable<Localization> localizations, IEnumerable<string> filterCultures, string cabCachePath, IEnumerable<IBindPath> bindPaths, CancellationToken cancellationToken)
298 { 303 {
299 var intermediateFolder = this.IntermediateFolder; 304 var intermediateFolder = this.IntermediateFolder;
300 if (String.IsNullOrEmpty(intermediateFolder)) 305 if (String.IsNullOrEmpty(intermediateFolder))
@@ -312,6 +317,7 @@ namespace WixToolset.Core.CommandLine
312 context.IntermediateFolder = intermediateFolder; 317 context.IntermediateFolder = intermediateFolder;
313 context.IntermediateRepresentation = output; 318 context.IntermediateRepresentation = output;
314 context.Localizations = localizations; 319 context.Localizations = localizations;
320 context.CancellationToken = cancellationToken;
315 321
316 var resolver = this.ServiceProvider.GetService<IResolver>(); 322 var resolver = this.ServiceProvider.GetService<IResolver>();
317 resolveResult = resolver.Resolve(context); 323 resolveResult = resolver.Resolve(context);
@@ -343,6 +349,7 @@ namespace WixToolset.Core.CommandLine
343 context.PdbPath = this.PdbType == PdbType.None ? null : this.PdbFile ?? Path.ChangeExtension(this.OutputFile, ".wixpdb"); 349 context.PdbPath = this.PdbType == PdbType.None ? null : this.PdbFile ?? Path.ChangeExtension(this.OutputFile, ".wixpdb");
344 context.SuppressIces = Array.Empty<string>(); // TODO: set this correctly 350 context.SuppressIces = Array.Empty<string>(); // TODO: set this correctly
345 context.SuppressValidation = true; // TODO: set this correctly 351 context.SuppressValidation = true; // TODO: set this correctly
352 context.CancellationToken = cancellationToken;
346 353
347 var binder = this.ServiceProvider.GetService<IBinder>(); 354 var binder = this.ServiceProvider.GetService<IBinder>();
348 bindResult = binder.Bind(context); 355 bindResult = binder.Bind(context);
@@ -363,6 +370,7 @@ namespace WixToolset.Core.CommandLine
363 context.OutputsFile = this.OutputsFile; 370 context.OutputsFile = this.OutputsFile;
364 context.BuiltOutputsFile = this.BuiltOutputsFile; 371 context.BuiltOutputsFile = this.BuiltOutputsFile;
365 context.SuppressAclReset = false; // TODO: correctly set SuppressAclReset 372 context.SuppressAclReset = false; // TODO: correctly set SuppressAclReset
373 context.CancellationToken = cancellationToken;
366 374
367 var layout = this.ServiceProvider.GetService<ILayoutCreator>(); 375 var layout = this.ServiceProvider.GetService<ILayoutCreator>();
368 layout.Layout(context); 376 layout.Layout(context);
@@ -392,14 +400,14 @@ namespace WixToolset.Core.CommandLine
392 return Array.Empty<Intermediate>(); 400 return Array.Empty<Intermediate>();
393 } 401 }
394 402
395 private IEnumerable<Localization> LoadLocalizationFiles(IEnumerable<string> locFiles, IDictionary<string, string> preprocessorVariables) 403 private IEnumerable<Localization> LoadLocalizationFiles(IEnumerable<string> locFiles, IDictionary<string, string> preprocessorVariables, CancellationToken cancellationToken)
396 { 404 {
397 var localizations = new List<Localization>(); 405 var localizations = new List<Localization>();
398 var parser = this.ServiceProvider.GetService<ILocalizationParser>(); 406 var parser = this.ServiceProvider.GetService<ILocalizationParser>();
399 407
400 foreach (var loc in locFiles) 408 foreach (var loc in locFiles)
401 { 409 {
402 var document = this.Preprocess(preprocessorVariables, loc); 410 var document = this.Preprocess(preprocessorVariables, loc, cancellationToken);
403 411
404 if (this.Messaging.EncounteredError) 412 if (this.Messaging.EncounteredError)
405 { 413 {
@@ -413,7 +421,7 @@ namespace WixToolset.Core.CommandLine
413 return localizations; 421 return localizations;
414 } 422 }
415 423
416 private XDocument Preprocess(IDictionary<string, string> preprocessorVariables, string sourcePath) 424 private XDocument Preprocess(IDictionary<string, string> preprocessorVariables, string sourcePath, CancellationToken cancellationToken)
417 { 425 {
418 var context = this.ServiceProvider.GetService<IPreprocessContext>(); 426 var context = this.ServiceProvider.GetService<IPreprocessContext>();
419 context.Extensions = this.ExtensionManager.GetServices<IPreprocessorExtension>(); 427 context.Extensions = this.ExtensionManager.GetServices<IPreprocessorExtension>();
@@ -421,6 +429,7 @@ namespace WixToolset.Core.CommandLine
421 context.IncludeSearchPaths = this.IncludeSearchPaths; 429 context.IncludeSearchPaths = this.IncludeSearchPaths;
422 context.SourcePath = sourcePath; 430 context.SourcePath = sourcePath;
423 context.Variables = preprocessorVariables; 431 context.Variables = preprocessorVariables;
432 context.CancellationToken = cancellationToken;
424 433
425 IPreprocessResult result = null; 434 IPreprocessResult result = null;
426 try 435 try
diff --git a/src/WixToolset.Core/CommandLine/CompileCommand.cs b/src/WixToolset.Core/CommandLine/CompileCommand.cs
index 67756947..d16c7a46 100644
--- a/src/WixToolset.Core/CommandLine/CompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/CompileCommand.cs
@@ -4,7 +4,8 @@ namespace WixToolset.Core.CommandLine
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.Xml.Linq; 7 using System.Threading;
8 using System.Threading.Tasks;
8 using WixToolset.Data; 9 using WixToolset.Data;
9 using WixToolset.Extensibility; 10 using WixToolset.Extensibility;
10 using WixToolset.Extensibility.Data; 11 using WixToolset.Extensibility.Data;
@@ -47,12 +48,9 @@ namespace WixToolset.Core.CommandLine
47 48
48 public bool StopParsing => throw new NotImplementedException(); 49 public bool StopParsing => throw new NotImplementedException();
49 50
50 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) 51 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => throw new NotImplementedException();
51 {
52 throw new NotImplementedException();
53 }
54 52
55 public int Execute() 53 public Task<int> ExecuteAsync(CancellationToken _)
56 { 54 {
57 foreach (var sourceFile in this.SourceFiles) 55 foreach (var sourceFile in this.SourceFiles)
58 { 56 {
@@ -91,7 +89,7 @@ namespace WixToolset.Core.CommandLine
91 intermediate.Save(sourceFile.OutputPath); 89 intermediate.Save(sourceFile.OutputPath);
92 } 90 }
93 91
94 return 0; 92 return Task.FromResult(0);
95 } 93 }
96 } 94 }
97} 95}
diff --git a/src/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
index 0e21a4f4..1e11ae52 100644
--- a/src/WixToolset.Core/CommandLine/DecompileCommand.cs
+++ b/src/WixToolset.Core/CommandLine/DecompileCommand.cs
@@ -4,6 +4,8 @@ namespace WixToolset.Core.CommandLine
4{ 4{
5 using System; 5 using System;
6 using System.IO; 6 using System.IO;
7 using System.Threading;
8 using System.Threading.Tasks;
7 using System.Xml.Linq; 9 using System.Xml.Linq;
8 using WixToolset.Data; 10 using WixToolset.Data;
9 using WixToolset.Extensibility; 11 using WixToolset.Extensibility;
@@ -29,12 +31,12 @@ namespace WixToolset.Core.CommandLine
29 31
30 public IMessaging Messaging { get; } 32 public IMessaging Messaging { get; }
31 33
32 public int Execute() 34 public Task<int> ExecuteAsync(CancellationToken _)
33 { 35 {
34 if (this.commandLine.ShowHelp) 36 if (this.commandLine.ShowHelp)
35 { 37 {
36 Console.WriteLine("TODO: Show decompile command help"); 38 Console.WriteLine("TODO: Show decompile command help");
37 return -1; 39 return Task.FromResult(-1);
38 } 40 }
39 41
40 var context = this.ServiceProvider.GetService<IDecompileContext>(); 42 var context = this.ServiceProvider.GetService<IDecompileContext>();
@@ -61,10 +63,10 @@ namespace WixToolset.Core.CommandLine
61 63
62 if (this.Messaging.EncounteredError) 64 if (this.Messaging.EncounteredError)
63 { 65 {
64 return 1; 66 return Task.FromResult(1);
65 } 67 }
66 68
67 return 0; 69 return Task.FromResult(0);
68 } 70 }
69 71
70 public bool TryParseArgument(ICommandLineParser parser, string argument) 72 public bool TryParseArgument(ICommandLineParser parser, string argument)
diff --git a/src/WixToolset.Core/CommandLine/HelpCommand.cs b/src/WixToolset.Core/CommandLine/HelpCommand.cs
index 224b154c..78845189 100644
--- a/src/WixToolset.Core/CommandLine/HelpCommand.cs
+++ b/src/WixToolset.Core/CommandLine/HelpCommand.cs
@@ -1,8 +1,10 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Core.CommandLine 3namespace WixToolset.Core.CommandLine
4{ 4{
5 using System; 5 using System;
6 using System.Threading;
7 using System.Threading.Tasks;
6 using WixToolset.Extensibility.Data; 8 using WixToolset.Extensibility.Data;
7 using WixToolset.Extensibility.Services; 9 using WixToolset.Extensibility.Services;
8 10
@@ -12,11 +14,11 @@ namespace WixToolset.Core.CommandLine
12 14
13 public bool StopParsing => true; 15 public bool StopParsing => true;
14 16
15 public int Execute() 17 public Task<int> ExecuteAsync(CancellationToken _)
16 { 18 {
17 Console.WriteLine("TODO: Show list of available commands"); 19 Console.WriteLine("TODO: Show list of available commands");
18 20
19 return -1; 21 return Task.FromResult(-1);
20 } 22 }
21 23
22 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) 24 public bool TryParseArgument(ICommandLineParser parseHelper, string argument)
diff --git a/src/WixToolset.Core/CommandLine/VersionCommand.cs b/src/WixToolset.Core/CommandLine/VersionCommand.cs
index 50e90a93..6ce2a89d 100644
--- a/src/WixToolset.Core/CommandLine/VersionCommand.cs
+++ b/src/WixToolset.Core/CommandLine/VersionCommand.cs
@@ -3,6 +3,8 @@
3namespace WixToolset.Core.CommandLine 3namespace WixToolset.Core.CommandLine
4{ 4{
5 using System; 5 using System;
6 using System.Threading;
7 using System.Threading.Tasks;
6 using WixToolset.Extensibility.Data; 8 using WixToolset.Extensibility.Data;
7 using WixToolset.Extensibility.Services; 9 using WixToolset.Extensibility.Services;
8 10
@@ -12,12 +14,12 @@ namespace WixToolset.Core.CommandLine
12 14
13 public bool StopParsing => true; 15 public bool StopParsing => true;
14 16
15 public int Execute() 17 public Task<int> ExecuteAsync(CancellationToken cancellationToken)
16 { 18 {
17 Console.WriteLine("wix version {0}", ThisAssembly.AssemblyInformationalVersion); 19 Console.WriteLine("wix version {0}", ThisAssembly.AssemblyInformationalVersion);
18 Console.WriteLine(); 20 Console.WriteLine();
19 21
20 return 0; 22 return Task.FromResult(0);
21 } 23 }
22 24
23 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => true; // eat any arguments 25 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => true; // eat any arguments
diff --git a/src/WixToolset.Core/CompileContext.cs b/src/WixToolset.Core/CompileContext.cs
index f92a131d..7dc862b9 100644
--- a/src/WixToolset.Core/CompileContext.cs
+++ b/src/WixToolset.Core/CompileContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using System.Xml.Linq; 7 using System.Xml.Linq;
8 using WixToolset.Data; 8 using WixToolset.Data;
9 using WixToolset.Extensibility; 9 using WixToolset.Extensibility;
@@ -28,5 +28,7 @@ namespace WixToolset.Core
28 public Platform Platform { get; set; } 28 public Platform Platform { get; set; }
29 29
30 public XDocument Source { get; set; } 30 public XDocument Source { get; set; }
31
32 public CancellationToken CancellationToken { get; set; }
31 } 33 }
32} 34}
diff --git a/src/WixToolset.Core/LayoutContext.cs b/src/WixToolset.Core/LayoutContext.cs
index 385aa610..7bbae0c0 100644
--- a/src/WixToolset.Core/LayoutContext.cs
+++ b/src/WixToolset.Core/LayoutContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Extensibility; 7 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data; 8 using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services; 9 using WixToolset.Extensibility.Services;
@@ -34,5 +34,7 @@ namespace WixToolset.Core
34 public string BuiltOutputsFile { get; set; } 34 public string BuiltOutputsFile { get; set; }
35 35
36 public bool SuppressAclReset { get; set; } 36 public bool SuppressAclReset { get; set; }
37
38 public CancellationToken CancellationToken { get; set; }
37 } 39 }
38} 40}
diff --git a/src/WixToolset.Core/LibraryContext.cs b/src/WixToolset.Core/LibraryContext.cs
index 4df19702..9fd76cf5 100644
--- a/src/WixToolset.Core/LibraryContext.cs
+++ b/src/WixToolset.Core/LibraryContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
@@ -31,5 +31,7 @@ namespace WixToolset.Core
31 public IEnumerable<Localization> Localizations { get; set; } 31 public IEnumerable<Localization> Localizations { get; set; }
32 32
33 public IEnumerable<Intermediate> Intermediates { get; set; } 33 public IEnumerable<Intermediate> Intermediates { get; set; }
34
35 public CancellationToken CancellationToken { get; set; }
34 } 36 }
35} 37}
diff --git a/src/WixToolset.Core/LinkContext.cs b/src/WixToolset.Core/LinkContext.cs
index 64dd2320..65b1179e 100644
--- a/src/WixToolset.Core/LinkContext.cs
+++ b/src/WixToolset.Core/LinkContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
@@ -27,5 +27,7 @@ namespace WixToolset.Core
27 public IEnumerable<Intermediate> Intermediates { get; set; } 27 public IEnumerable<Intermediate> Intermediates { get; set; }
28 28
29 public ITupleDefinitionCreator TupleDefinitionCreator { get; set; } 29 public ITupleDefinitionCreator TupleDefinitionCreator { get; set; }
30
31 public CancellationToken CancellationToken { get; set; }
30 } 32 }
31} 33}
diff --git a/src/WixToolset.Core/PreprocessContext.cs b/src/WixToolset.Core/PreprocessContext.cs
index 15529d24..d273d76b 100644
--- a/src/WixToolset.Core/PreprocessContext.cs
+++ b/src/WixToolset.Core/PreprocessContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
@@ -29,5 +29,7 @@ namespace WixToolset.Core
29 public IDictionary<string, string> Variables { get; set; } 29 public IDictionary<string, string> Variables { get; set; }
30 30
31 public SourceLineNumber CurrentSourceLineNumber { get; set; } 31 public SourceLineNumber CurrentSourceLineNumber { get; set; }
32
33 public CancellationToken CancellationToken { get; set; }
32 } 34 }
33} 35}
diff --git a/src/WixToolset.Core/ResolveContext.cs b/src/WixToolset.Core/ResolveContext.cs
index 34da34d1..6e1718b6 100644
--- a/src/WixToolset.Core/ResolveContext.cs
+++ b/src/WixToolset.Core/ResolveContext.cs
@@ -2,8 +2,8 @@
2 2
3namespace WixToolset.Core 3namespace WixToolset.Core
4{ 4{
5 using System;
6 using System.Collections.Generic; 5 using System.Collections.Generic;
6 using System.Threading;
7 using WixToolset.Data; 7 using WixToolset.Data;
8 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
9 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
@@ -35,5 +35,7 @@ namespace WixToolset.Core
35 public IVariableResolver VariableResolver { get; set; } 35 public IVariableResolver VariableResolver { get; set; }
36 36
37 public bool AllowUnresolvedVariables { get; set; } 37 public bool AllowUnresolvedVariables { get; set; }
38
39 public CancellationToken CancellationToken { get; set; }
38 } 40 }
39} 41}