Make convert code async
Rob Mensching committed
Jun 8, 2020 at 16:19 UTC
71e3338346841dcd31f18dd715cfa106b2a6e548
2 files changed
+11
-7
src/WixToolset.Converters/ConvertCommand.cs
+10
-6
@@ -5,6 +5,8 @@ namespace WixToolset.Converters
5
using System;
6
using System.Collections.Generic;
7
using System.IO;
8
+ using System.Threading;
9
+ using System.Threading.Tasks;
10
using System.Xml;
11
using WixToolset.Extensibility.Data;
12
using WixToolset.Extensibility.Services;
@@ -110,12 +112,12 @@ namespace WixToolset.Converters
112
}
113
}
114
113
- public int Execute()
115
+ public Task<int> ExecuteAsync(CancellationToken cancellationToken)
116
{
117
if (this.ShowHelp)
118
{
119
DisplayHelp();
118
- return 1;
120
+ return Task.FromResult(1);
121
}
122
123
// parse the settings if any were specified
@@ -133,7 +135,7 @@ namespace WixToolset.Converters
135
136
var converter = new Wix3Converter(this.Messaging, this.IndentationAmount, this.ErrorsAsWarnings, this.IgnoreErrors);
137
136
- var errors = this.InspectSubDirectories(converter, Path.GetFullPath("."));
138
+ var errors = this.InspectSubDirectories(converter, Path.GetFullPath("."), cancellationToken);
139
140
foreach (var searchPattern in this.SearchPatterns)
141
{
@@ -144,7 +146,7 @@ namespace WixToolset.Converters
146
}
147
}
148
147
- return errors != 0 ? 2 : 0;
149
+ return Task.FromResult(errors != 0 ? 2 : 0);
150
}
151
152
private static void DisplayHelp()
@@ -202,7 +204,7 @@ namespace WixToolset.Converters
204
/// </summary>
205
/// <param name="directory">The directory whose sub-directories will be inspected.</param>
206
/// <returns>The number of errors that were found.</returns>
205
- private int InspectSubDirectories(Wix3Converter converter, string directory)
207
+ private int InspectSubDirectories(Wix3Converter converter, string directory, CancellationToken cancellationToken)
208
{
209
var errors = 0;
210
@@ -210,6 +212,8 @@ namespace WixToolset.Converters
212
{
213
foreach (var sourceFilePath in GetFiles(directory, searchPattern))
214
{
215
+ cancellationToken.ThrowIfCancellationRequested();
216
+
217
var file = new FileInfo(sourceFilePath);
218
219
if (!this.ExemptFiles.Contains(file.Name.ToUpperInvariant()))
@@ -224,7 +228,7 @@ namespace WixToolset.Converters
228
{
229
foreach (var childDirectoryPath in Directory.GetDirectories(directory))
230
{
227
- errors += this.InspectSubDirectories(converter, childDirectoryPath);
231
+ errors += this.InspectSubDirectories(converter, childDirectoryPath, cancellationToken);
232
}
233
}
234
src/test/WixToolsetTest.Converters/ConverterIntegrationFixture.cs
+1
-1
@@ -158,7 +158,7 @@ namespace WixToolsetTest.Converters
158
targetFile
159
}, serviceProvider, out var messages);
160
161
- return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() };
161
+ return new WixRunnerResult { ExitCode = exitCode.Result, Messages = messages.ToArray() };
162
}
163
164
private static void EnsureFixed(string targetFile)