aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2022-01-08 05:51:26 -0800
committerRob Mensching <rob@firegiant.com>2022-01-10 17:08:43 -0800
commit02ee982cf4ceabd64dbe966dc3771d272d53a085 (patch)
tree820d685014ac0fb20b0493d4a05cfd9fe2baa5d0
parenta96db4a508f1d1774500ab89f2c57e581fb5a13a (diff)
downloadwix-02ee982cf4ceabd64dbe966dc3771d272d53a085.tar.gz
wix-02ee982cf4ceabd64dbe966dc3771d272d53a085.tar.bz2
wix-02ee982cf4ceabd64dbe966dc3771d272d53a085.zip
Centralize common command-line switches parsing
-rw-r--r--src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs7
-rw-r--r--src/wix/WixToolset.Converters/FixupCommandBase.cs6
-rw-r--r--src/wix/WixToolset.Core.ExtensionCache/ExtensionCacheManagerCommand.cs6
-rw-r--r--src/wix/WixToolset.Core/CommandLine/BuildCommand.cs82
-rw-r--r--src/wix/WixToolset.Core/CommandLine/CommandLine.cs87
-rw-r--r--src/wix/WixToolset.Core/CommandLine/CompileCommand.cs19
-rw-r--r--src/wix/WixToolset.Core/CommandLine/DecompileCommand.cs82
-rw-r--r--src/wix/WixToolset.Core/CommandLine/HelpCommand.cs17
-rw-r--r--src/wix/WixToolset.Core/CommandLine/VersionCommand.cs9
-rw-r--r--src/wix/heat/HeatCommand.cs10
-rw-r--r--src/wix/heat/HelpCommand.cs15
11 files changed, 177 insertions, 163 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs b/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs
index b03a18f4..b6c9ef3e 100644
--- a/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs
+++ b/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs
@@ -12,9 +12,14 @@ namespace WixToolset.Extensibility.Data
12 public interface ICommandLineCommand 12 public interface ICommandLineCommand
13 { 13 {
14 /// <summary> 14 /// <summary>
15 /// Indicates the command-line should show help for the command.
16 /// </summary>
17 bool ShowHelp { get; set; }
18
19 /// <summary>
15 /// Indicates the command-line should show the command-line logo. 20 /// Indicates the command-line should show the command-line logo.
16 /// </summary> 21 /// </summary>
17 bool ShowLogo { get; } 22 bool ShowLogo { get; set; }
18 23
19 /// <summary> 24 /// <summary>
20 /// Indicates the command-line parsing can stop. 25 /// Indicates the command-line parsing can stop.
diff --git a/src/wix/WixToolset.Converters/FixupCommandBase.cs b/src/wix/WixToolset.Converters/FixupCommandBase.cs
index 21282d07..71d4dad7 100644
--- a/src/wix/WixToolset.Converters/FixupCommandBase.cs
+++ b/src/wix/WixToolset.Converters/FixupCommandBase.cs
@@ -23,11 +23,11 @@ namespace WixToolset.Converters
23 this.SearchPatterns = new List<string>(); 23 this.SearchPatterns = new List<string>();
24 } 24 }
25 25
26 public bool ShowLogo { get; private set; } 26 public bool ShowHelp { get; set; }
27 27
28 public bool StopParsing { get; private set; } 28 public bool ShowLogo { get; set; }
29 29
30 protected bool ShowHelp { get; set; } 30 public bool StopParsing { get; set; }
31 31
32 protected CustomTableTarget CustomTableSetting { get; set; } 32 protected CustomTableTarget CustomTableSetting { get; set; }
33 33
diff --git a/src/wix/WixToolset.Core.ExtensionCache/ExtensionCacheManagerCommand.cs b/src/wix/WixToolset.Core.ExtensionCache/ExtensionCacheManagerCommand.cs
index 94ee4f22..d37ee341 100644
--- a/src/wix/WixToolset.Core.ExtensionCache/ExtensionCacheManagerCommand.cs
+++ b/src/wix/WixToolset.Core.ExtensionCache/ExtensionCacheManagerCommand.cs
@@ -30,11 +30,11 @@ namespace WixToolset.Core.ExtensionCache
30 30
31 private IMessaging Messaging { get; } 31 private IMessaging Messaging { get; }
32 32
33 public bool ShowLogo { get; private set; } 33 public bool ShowHelp { get; set; }
34 34
35 public bool StopParsing { get; private set; } 35 public bool ShowLogo { get; set; }
36 36
37 private bool ShowHelp { get; set; } 37 public bool StopParsing { get; set; }
38 38
39 private bool Global { get; set; } 39 private bool Global { get; set; }
40 40
diff --git a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs
index 47b7afa8..3ea47279 100644
--- a/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/wix/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -26,8 +26,19 @@ namespace WixToolset.Core.CommandLine
26 this.commandLine = new CommandLine(this.ServiceProvider, this.Messaging); 26 this.commandLine = new CommandLine(this.ServiceProvider, this.Messaging);
27 } 27 }
28 28
29 public bool ShowLogo => this.commandLine.ShowLogo; 29 public bool ShowHelp
30 {
31 get { return this.commandLine.ShowHelp; }
32 set { this.commandLine.ShowHelp = value; }
33 }
34
35 public bool ShowLogo
36 {
37 get { return this.commandLine.ShowLogo; }
38 set { this.commandLine.ShowLogo = value; }
39 }
30 40
41 // Stop parsing when we've decided to show help.
31 public bool StopParsing => this.commandLine.ShowHelp; 42 public bool StopParsing => this.commandLine.ShowHelp;
32 43
33 private IServiceProvider ServiceProvider { get; } 44 private IServiceProvider ServiceProvider { get; }
@@ -515,9 +526,9 @@ namespace WixToolset.Core.CommandLine
515 526
516 public PdbType PdbType { get; private set; } 527 public PdbType PdbType { get; private set; }
517 528
518 public bool ShowLogo { get; private set; } 529 public bool ShowLogo { get; set; }
519 530
520 public bool ShowHelp { get; private set; } 531 public bool ShowHelp { get; set; }
521 532
522 public string IntermediateFolder { get; private set; } 533 public string IntermediateFolder { get; private set; }
523 534
@@ -554,12 +565,6 @@ namespace WixToolset.Core.CommandLine
554 var parameter = arg.Substring(1).ToLowerInvariant(); 565 var parameter = arg.Substring(1).ToLowerInvariant();
555 switch (parameter) 566 switch (parameter)
556 { 567 {
557 case "?":
558 case "h":
559 case "help":
560 this.ShowHelp = true;
561 return true;
562
563 case "arch": 568 case "arch":
564 case "platform": 569 case "platform":
565 { 570 {
@@ -672,15 +677,6 @@ namespace WixToolset.Core.CommandLine
672 return true; 677 return true;
673 } 678 }
674 679
675 case "nologo":
676 this.ShowLogo = false;
677 return true;
678
679 case "v":
680 case "verbose":
681 this.Messaging.ShowVerboseMessages = true;
682 return true;
683
684 case "sval": 680 case "sval":
685 this.SuppressValidation = true; 681 this.SuppressValidation = true;
686 return true; 682 return true;
@@ -690,22 +686,6 @@ namespace WixToolset.Core.CommandLine
690 return true; 686 return true;
691 } 687 }
692 688
693 if (parameter.StartsWith("sw"))
694 {
695 this.ParseSuppressWarning(parameter, "sw".Length, parser);
696 return true;
697 }
698 else if (parameter.StartsWith("suppresswarning"))
699 {
700 this.ParseSuppressWarning(parameter, "suppresswarning".Length, parser);
701 return true;
702 }
703 else if (parameter.StartsWith("wx"))
704 {
705 this.ParseWarningAsError(parameter, "wx".Length, parser);
706 return true;
707 }
708
709 return false; 689 return false;
710 } 690 }
711 else 691 else
@@ -851,40 +831,6 @@ namespace WixToolset.Core.CommandLine
851 831
852 return true; 832 return true;
853 } 833 }
854
855 private void ParseSuppressWarning(string parameter, int offset, ICommandLineParser parser)
856 {
857 var paramArg = parameter.Substring(offset);
858 if (paramArg.Length == 0)
859 {
860 this.Messaging.SuppressAllWarnings = true;
861 }
862 else if (Int32.TryParse(paramArg, out var suppressWarning) && suppressWarning > 0)
863 {
864 this.Messaging.SuppressWarningMessage(suppressWarning);
865 }
866 else
867 {
868 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg));
869 }
870 }
871
872 private void ParseWarningAsError(string parameter, int offset, ICommandLineParser parser)
873 {
874 var paramArg = parameter.Substring(offset);
875 if (paramArg.Length == 0)
876 {
877 this.Messaging.WarningsAsError = true;
878 }
879 else if (Int32.TryParse(paramArg, out var elevateWarning) && elevateWarning > 0)
880 {
881 this.Messaging.ElevateWarningMessage(elevateWarning);
882 }
883 else
884 {
885 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalWarningIdAsError(paramArg));
886 }
887 }
888 } 834 }
889 } 835 }
890} 836}
diff --git a/src/wix/WixToolset.Core/CommandLine/CommandLine.cs b/src/wix/WixToolset.Core/CommandLine/CommandLine.cs
index 73a82dfc..8913828b 100644
--- a/src/wix/WixToolset.Core/CommandLine/CommandLine.cs
+++ b/src/wix/WixToolset.Core/CommandLine/CommandLine.cs
@@ -4,6 +4,7 @@ namespace WixToolset.Core.CommandLine
4{ 4{
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using WixToolset.Data;
7 using WixToolset.Extensibility; 8 using WixToolset.Extensibility;
8 using WixToolset.Extensibility.Data; 9 using WixToolset.Extensibility.Data;
9 using WixToolset.Extensibility.Services; 10 using WixToolset.Extensibility.Services;
@@ -21,10 +22,16 @@ namespace WixToolset.Core.CommandLine
21 22
22 internal class CommandLine : ICommandLine 23 internal class CommandLine : ICommandLine
23 { 24 {
24 public CommandLine(IServiceProvider serviceProvider) => this.ServiceProvider = serviceProvider; 25 public CommandLine(IServiceProvider serviceProvider)
26 {
27 this.ServiceProvider = serviceProvider;
28 this.Messaging = serviceProvider.GetService<IMessaging>();
29 }
25 30
26 private IServiceProvider ServiceProvider { get; } 31 private IServiceProvider ServiceProvider { get; }
27 32
33 private IMessaging Messaging { get; }
34
28 public ICommandLineCommand CreateCommand(string[] args) 35 public ICommandLineCommand CreateCommand(string[] args)
29 { 36 {
30 var arguments = this.ServiceProvider.GetService<ICommandLineArguments>(); 37 var arguments = this.ServiceProvider.GetService<ICommandLineArguments>();
@@ -105,7 +112,8 @@ namespace WixToolset.Core.CommandLine
105 } 112 }
106 else if (parser.IsSwitch(arg)) 113 else if (parser.IsSwitch(arg))
107 { 114 {
108 if (!command.TryParseArgument(parser, arg) && !TryParseCommandLineArgumentWithExtension(arg, parser, extensions)) 115 if (!command.TryParseArgument(parser, arg) && !TryParseCommandLineArgumentWithExtension(arg, parser, extensions) &&
116 !this.TryParseStandardCommandLineSwitch(command, parser, arg))
109 { 117 {
110 parser.ReportErrorArgument(arg); 118 parser.ReportErrorArgument(arg);
111 } 119 }
@@ -195,5 +203,80 @@ namespace WixToolset.Core.CommandLine
195 203
196 return false; 204 return false;
197 } 205 }
206
207 private bool TryParseStandardCommandLineSwitch(ICommandLineCommand command, ICommandLineParser parser, string arg)
208 {
209 var parameter = arg.Substring(1).ToLowerInvariant();
210
211 switch (parameter)
212 {
213 case "?":
214 case "h":
215 case "help":
216 command.ShowHelp = true;
217 return true;
218
219 case "nologo":
220 command.ShowLogo = false;
221 return true;
222
223 case "v":
224 case "verbose":
225 this.Messaging.ShowVerboseMessages = true;
226 return true;
227 }
228
229 if (parameter.StartsWith("sw"))
230 {
231 this.ParseSuppressWarning(parameter, "sw".Length, parser);
232 return true;
233 }
234 else if (parameter.StartsWith("suppresswarning"))
235 {
236 this.ParseSuppressWarning(parameter, "suppresswarning".Length, parser);
237 return true;
238 }
239 else if (parameter.StartsWith("wx"))
240 {
241 this.ParseWarningAsError(parameter, "wx".Length, parser);
242 return true;
243 }
244
245 return false;
246 }
247
248 private void ParseSuppressWarning(string parameter, int offset, ICommandLineParser parser)
249 {
250 var paramArg = parameter.Substring(offset);
251 if (paramArg.Length == 0)
252 {
253 this.Messaging.SuppressAllWarnings = true;
254 }
255 else if (Int32.TryParse(paramArg, out var suppressWarning) && suppressWarning > 0)
256 {
257 this.Messaging.SuppressWarningMessage(suppressWarning);
258 }
259 else
260 {
261 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg));
262 }
263 }
264
265 private void ParseWarningAsError(string parameter, int offset, ICommandLineParser parser)
266 {
267 var paramArg = parameter.Substring(offset);
268 if (paramArg.Length == 0)
269 {
270 this.Messaging.WarningsAsError = true;
271 }
272 else if (Int32.TryParse(paramArg, out var elevateWarning) && elevateWarning > 0)
273 {
274 this.Messaging.ElevateWarningMessage(elevateWarning);
275 }
276 else
277 {
278 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalWarningIdAsError(paramArg));
279 }
280 }
198 } 281 }
199} 282}
diff --git a/src/wix/WixToolset.Core/CommandLine/CompileCommand.cs b/src/wix/WixToolset.Core/CommandLine/CompileCommand.cs
index 6e31b241..73e5bcbe 100644
--- a/src/wix/WixToolset.Core/CommandLine/CompileCommand.cs
+++ b/src/wix/WixToolset.Core/CommandLine/CompileCommand.cs
@@ -30,11 +30,17 @@ namespace WixToolset.Core.CommandLine
30 this.Platform = platform; 30 this.Platform = platform;
31 } 31 }
32 32
33 public bool ShowHelp { get; set; }
34
35 public bool ShowLogo { get; set; }
36
37 public bool StopParsing { get; }
38
33 private IServiceProvider ServiceProvider { get; } 39 private IServiceProvider ServiceProvider { get; }
34 40
35 public IMessaging Messaging { get; } 41 private IMessaging Messaging { get; }
36 42
37 public IExtensionManager ExtensionManager { get; } 43 private IExtensionManager ExtensionManager { get; }
38 44
39 private IEnumerable<SourceFile> SourceFiles { get; } 45 private IEnumerable<SourceFile> SourceFiles { get; }
40 46
@@ -44,11 +50,10 @@ namespace WixToolset.Core.CommandLine
44 50
45 public IReadOnlyCollection<string> IncludeSearchPaths { get; } 51 public IReadOnlyCollection<string> IncludeSearchPaths { get; }
46 52
47 public bool ShowLogo => throw new NotImplementedException(); 53 public bool TryParseArgument(ICommandLineParser parseHelper, string argument)
48 54 {
49 public bool StopParsing => throw new NotImplementedException(); 55 throw new NotImplementedException();
50 56 }
51 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => throw new NotImplementedException();
52 57
53 public Task<int> ExecuteAsync(CancellationToken _) 58 public Task<int> ExecuteAsync(CancellationToken _)
54 { 59 {
diff --git a/src/wix/WixToolset.Core/CommandLine/DecompileCommand.cs b/src/wix/WixToolset.Core/CommandLine/DecompileCommand.cs
index fc0ab0c9..22853f86 100644
--- a/src/wix/WixToolset.Core/CommandLine/DecompileCommand.cs
+++ b/src/wix/WixToolset.Core/CommandLine/DecompileCommand.cs
@@ -23,8 +23,19 @@ namespace WixToolset.Core.CommandLine
23 this.commandLine = new CommandLine(this.Messaging); 23 this.commandLine = new CommandLine(this.Messaging);
24 } 24 }
25 25
26 public bool ShowLogo => this.commandLine.ShowLogo; 26 public bool ShowHelp
27 {
28 get { return this.commandLine.ShowHelp; }
29 set { this.commandLine.ShowHelp = value; }
30 }
31
32 public bool ShowLogo
33 {
34 get { return this.commandLine.ShowLogo; }
35 set { this.commandLine.ShowLogo = value; }
36 }
27 37
38 // Stop parsing when we've decided to show help.
28 public bool StopParsing => this.commandLine.ShowHelp; 39 public bool StopParsing => this.commandLine.ShowHelp;
29 40
30 private IServiceProvider ServiceProvider { get; } 41 private IServiceProvider ServiceProvider { get; }
@@ -90,9 +101,9 @@ namespace WixToolset.Core.CommandLine
90 101
91 public Platform Platform { get; private set; } 102 public Platform Platform { get; private set; }
92 103
93 public bool ShowLogo { get; private set; } 104 public bool ShowLogo { get; set; }
94 105
95 public bool ShowHelp { get; private set; } 106 public bool ShowHelp { get; set; }
96 107
97 public string IntermediateFolder { get; private set; } 108 public string IntermediateFolder { get; private set; }
98 109
@@ -105,12 +116,6 @@ namespace WixToolset.Core.CommandLine
105 var parameter = arg.Substring(1); 116 var parameter = arg.Substring(1);
106 switch (parameter.ToLowerInvariant()) 117 switch (parameter.ToLowerInvariant())
107 { 118 {
108 case "?":
109 case "h":
110 case "help":
111 this.ShowHelp = true;
112 return true;
113
114 case "intermediatefolder": 119 case "intermediatefolder":
115 this.IntermediateFolder = parser.GetNextArgumentAsDirectoryOrError(arg); 120 this.IntermediateFolder = parser.GetNextArgumentAsDirectoryOrError(arg);
116 return true; 121 return true;
@@ -119,31 +124,6 @@ namespace WixToolset.Core.CommandLine
119 case "out": 124 case "out":
120 this.OutputFile = parser.GetNextArgumentAsFilePathOrError(arg); 125 this.OutputFile = parser.GetNextArgumentAsFilePathOrError(arg);
121 return true; 126 return true;
122
123 case "nologo":
124 this.ShowLogo = false;
125 return true;
126
127 case "v":
128 case "verbose":
129 this.Messaging.ShowVerboseMessages = true;
130 return true;
131 }
132
133 if (parameter.StartsWith("sw"))
134 {
135 this.ParseSuppressWarning(parameter, "sw".Length, parser);
136 return true;
137 }
138 else if (parameter.StartsWith("suppresswarning"))
139 {
140 this.ParseSuppressWarning(parameter, "suppresswarning".Length, parser);
141 return true;
142 }
143 else if (parameter.StartsWith("wx"))
144 {
145 this.ParseWarningAsError(parameter, "wx".Length, parser);
146 return true;
147 } 127 }
148 } 128 }
149 else 129 else
@@ -217,40 +197,6 @@ namespace WixToolset.Core.CommandLine
217 { 197 {
218 return String.IsNullOrEmpty(this.OutputFile) ? Path.ChangeExtension(this.DecompileFilePath, ".wxs") : this.OutputFile; 198 return String.IsNullOrEmpty(this.OutputFile) ? Path.ChangeExtension(this.DecompileFilePath, ".wxs") : this.OutputFile;
219 } 199 }
220
221 private void ParseSuppressWarning(string parameter, int offset, ICommandLineParser parser)
222 {
223 var paramArg = parameter.Substring(offset);
224 if (paramArg.Length == 0)
225 {
226 this.Messaging.SuppressAllWarnings = true;
227 }
228 else if (Int32.TryParse(paramArg, out var suppressWarning) && suppressWarning > 0)
229 {
230 this.Messaging.SuppressWarningMessage(suppressWarning);
231 }
232 else
233 {
234 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg));
235 }
236 }
237
238 private void ParseWarningAsError(string parameter, int offset, ICommandLineParser parser)
239 {
240 var paramArg = parameter.Substring(offset);
241 if (paramArg.Length == 0)
242 {
243 this.Messaging.WarningsAsError = true;
244 }
245 else if (Int32.TryParse(paramArg, out var elevateWarning) && elevateWarning > 0)
246 {
247 this.Messaging.ElevateWarningMessage(elevateWarning);
248 }
249 else
250 {
251 parser.ReportErrorArgument(parameter, ErrorMessages.IllegalWarningIdAsError(paramArg));
252 }
253 }
254 } 200 }
255 } 201 }
256} 202}
diff --git a/src/wix/WixToolset.Core/CommandLine/HelpCommand.cs b/src/wix/WixToolset.Core/CommandLine/HelpCommand.cs
index 4d192d43..9a879cc8 100644
--- a/src/wix/WixToolset.Core/CommandLine/HelpCommand.cs
+++ b/src/wix/WixToolset.Core/CommandLine/HelpCommand.cs
@@ -25,7 +25,17 @@ namespace WixToolset.Core.CommandLine
25 this.Branding = branding; 25 this.Branding = branding;
26 } 26 }
27 27
28 public bool ShowLogo => true; 28 public bool ShowHelp
29 {
30 get => true;
31 set { }
32 }
33
34 public bool ShowLogo
35 {
36 get => true;
37 set { }
38 }
29 39
30 public bool StopParsing => true; 40 public bool StopParsing => true;
31 41
@@ -61,6 +71,9 @@ namespace WixToolset.Core.CommandLine
61 return Task.FromResult(-1); 71 return Task.FromResult(-1);
62 } 72 }
63 73
64 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => true; // eat any arguments 74 public bool TryParseArgument(ICommandLineParser parseHelper, string argument)
75 {
76 return true; // eat any arguments
77 }
65 } 78 }
66} 79}
diff --git a/src/wix/WixToolset.Core/CommandLine/VersionCommand.cs b/src/wix/WixToolset.Core/CommandLine/VersionCommand.cs
index b9dacd3a..7e08b66e 100644
--- a/src/wix/WixToolset.Core/CommandLine/VersionCommand.cs
+++ b/src/wix/WixToolset.Core/CommandLine/VersionCommand.cs
@@ -10,7 +10,9 @@ namespace WixToolset.Core.CommandLine
10 10
11 internal class VersionCommand : ICommandLineCommand 11 internal class VersionCommand : ICommandLineCommand
12 { 12 {
13 public bool ShowLogo => true; 13 public bool ShowHelp { get; set; }
14
15 public bool ShowLogo { get; set; }
14 16
15 public bool StopParsing => true; 17 public bool StopParsing => true;
16 18
@@ -25,6 +27,9 @@ namespace WixToolset.Core.CommandLine
25 return Task.FromResult(0); 27 return Task.FromResult(0);
26 } 28 }
27 29
28 public bool TryParseArgument(ICommandLineParser parseHelper, string argument) => true; // eat any arguments 30 public bool TryParseArgument(ICommandLineParser parseHelper, string argument)
31 {
32 return true; // eat any arguments
33 }
29 } 34 }
30} 35}
diff --git a/src/wix/heat/HeatCommand.cs b/src/wix/heat/HeatCommand.cs
index 99f27521..56277004 100644
--- a/src/wix/heat/HeatCommand.cs
+++ b/src/wix/heat/HeatCommand.cs
@@ -28,6 +28,12 @@ namespace WixToolset.Harvesters
28 this.ExtensionOptions.Add(harvestType); 28 this.ExtensionOptions.Add(harvestType);
29 } 29 }
30 30
31 public bool ShowHelp { get; set; }
32
33 public bool ShowLogo { get; set; }
34
35 public bool StopParsing { get; private set; }
36
31 private string ExtensionArgument { get; set; } 37 private string ExtensionArgument { get; set; }
32 38
33 private List<string> ExtensionOptions { get; } = new List<string>(); 39 private List<string> ExtensionOptions { get; } = new List<string>();
@@ -44,10 +50,6 @@ namespace WixToolset.Harvesters
44 50
45 private IServiceProvider ServiceProvider { get; } 51 private IServiceProvider ServiceProvider { get; }
46 52
47 public bool ShowLogo { get; private set; }
48
49 public bool StopParsing { get; private set; }
50
51 public Task<int> ExecuteAsync(CancellationToken cancellationToken) 53 public Task<int> ExecuteAsync(CancellationToken cancellationToken)
52 { 54 {
53 var exitCode = this.Harvest(); 55 var exitCode = this.Harvest();
diff --git a/src/wix/heat/HelpCommand.cs b/src/wix/heat/HelpCommand.cs
index bd2bcc24..d991b4fa 100644
--- a/src/wix/heat/HelpCommand.cs
+++ b/src/wix/heat/HelpCommand.cs
@@ -24,7 +24,13 @@ namespace WixToolset.Harvesters
24 24
25 private IList<IHeatExtension> Extensions { get; } 25 private IList<IHeatExtension> Extensions { get; }
26 26
27 public bool ShowLogo => false; 27 public bool ShowHelp { get; set; }
28
29 public bool ShowLogo
30 {
31 get => false;
32 set { }
33 }
28 34
29 public bool StopParsing => true; 35 public bool StopParsing => true;
30 36
@@ -39,12 +45,15 @@ namespace WixToolset.Harvesters
39 var wixcopAssembly = typeof(HelpCommand).Assembly; 45 var wixcopAssembly = typeof(HelpCommand).Assembly;
40 var fv = FileVersionInfo.GetVersionInfo(wixcopAssembly.Location); 46 var fv = FileVersionInfo.GetVersionInfo(wixcopAssembly.Location);
41 47
42 Console.WriteLine("WiX Toolset Harvester version {0}", fv.FileVersion); 48 Console.WriteLine("WiX Toolset Harvester version {0}", fv.ProductVersion);
43 Console.WriteLine("Copyright (C) .NET Foundation and contributors. All rights reserved."); 49 Console.WriteLine("Copyright (C) .NET Foundation and contributors. All rights reserved.");
44 Console.WriteLine(); 50 Console.WriteLine();
45 } 51 }
46 52
47 public bool TryParseArgument(ICommandLineParser parser, string argument) => true; 53 public bool TryParseArgument(ICommandLineParser parser, string argument)
54 {
55 return true;
56 }
48 57
49 private int DisplayHelp() 58 private int DisplayHelp()
50 { 59 {