aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/CommandLine/CommandLine.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/CommandLine/CommandLine.cs')
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLine.cs29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/WixToolset.Core/CommandLine/CommandLine.cs b/src/WixToolset.Core/CommandLine/CommandLine.cs
index c6fe11b7..9bedca9a 100644
--- a/src/WixToolset.Core/CommandLine/CommandLine.cs
+++ b/src/WixToolset.Core/CommandLine/CommandLine.cs
@@ -22,7 +22,7 @@ namespace WixToolset.Core
22 Bind, 22 Bind,
23 } 23 }
24 24
25 internal class CommandLine : ICommandLine 25 internal class CommandLine : ICommandLine, IParseCommandLine
26 { 26 {
27 public CommandLine() 27 public CommandLine()
28 { 28 {
@@ -57,10 +57,10 @@ namespace WixToolset.Core
57 args = CommandLine.ParseArgumentsToArray(context.Arguments).Union(args).ToArray(); 57 args = CommandLine.ParseArgumentsToArray(context.Arguments).Union(args).ToArray();
58 } 58 }
59 59
60 return this.ParseStandardCommandLine(args); 60 return this.ParseStandardCommandLine(context, args);
61 } 61 }
62 62
63 private ICommandLineCommand ParseStandardCommandLine(string[] args) 63 private ICommandLineCommand ParseStandardCommandLine(ICommandLineContext context, string[] args)
64 { 64 {
65 var next = String.Empty; 65 var next = String.Empty;
66 66
@@ -90,7 +90,7 @@ namespace WixToolset.Core
90 var builtOutputsFile = String.Empty; 90 var builtOutputsFile = String.Empty;
91 var wixProjectFile = String.Empty; 91 var wixProjectFile = String.Empty;
92 92
93 this.Parse(args, (cmdline, arg) => Enum.TryParse(arg, true, out command), (cmdline, arg) => 93 this.Parse(context, args, (cmdline, arg) => Enum.TryParse(arg, true, out command), (cmdline, arg) =>
94 { 94 {
95 if (cmdline.IsSwitch(arg)) 95 if (cmdline.IsSwitch(arg))
96 { 96 {
@@ -279,13 +279,13 @@ namespace WixToolset.Core
279 } 279 }
280#endif 280#endif
281 281
282 private ICommandLine Parse(string[] commandLineArguments, Func<CommandLine, string, bool> parseCommand, Func<CommandLine, string, bool> parseArgument) 282 private ICommandLine Parse(ICommandLineContext context, string[] commandLineArguments, Func<CommandLine, string, bool> parseCommand, Func<CommandLine, string, bool> parseArgument)
283 { 283 {
284 this.FlattenArgumentsWithResponseFilesIntoOriginalArguments(commandLineArguments); 284 this.FlattenArgumentsWithResponseFilesIntoOriginalArguments(commandLineArguments);
285 285
286 this.QueueArgumentsAndLoadExtensions(this.OriginalArguments); 286 this.QueueArgumentsAndLoadExtensions(this.OriginalArguments);
287 287
288 this.ProcessRemainingArguments(parseArgument, parseCommand); 288 this.ProcessRemainingArguments(context, parseArgument, parseCommand);
289 289
290 return this; 290 return this;
291 } 291 }
@@ -413,7 +413,7 @@ namespace WixToolset.Core
413 /// <returns>True if a valid switch exists there, false if not.</returns> 413 /// <returns>True if a valid switch exists there, false if not.</returns>
414 public bool IsSwitch(string arg) 414 public bool IsSwitch(string arg)
415 { 415 {
416 return arg != null && ('/' == arg[0] || '-' == arg[0]); 416 return arg != null && arg.Length > 1 && ('/' == arg[0] || '-' == arg[0]);
417 } 417 }
418 418
419 /// <summary> 419 /// <summary>
@@ -522,10 +522,15 @@ namespace WixToolset.Core
522 } 522 }
523 } 523 }
524 524
525 private void ProcessRemainingArguments(Func<CommandLine, string, bool> parseArgument, Func<CommandLine, string, bool> parseCommand) 525 private void ProcessRemainingArguments(ICommandLineContext context, Func<CommandLine, string, bool> parseArgument, Func<CommandLine, string, bool> parseCommand)
526 { 526 {
527 var extensions = this.ExtensionManager.Create<IExtensionCommandLine>(); 527 var extensions = this.ExtensionManager.Create<IExtensionCommandLine>();
528 528
529 foreach (var extension in extensions)
530 {
531 extension.PreParse(context);
532 }
533
529 while (!this.ShowHelp && 534 while (!this.ShowHelp &&
530 String.IsNullOrEmpty(this.ErrorArgument) && 535 String.IsNullOrEmpty(this.ErrorArgument) &&
531 TryDequeue(this.RemainingArguments, out var arg)) 536 TryDequeue(this.RemainingArguments, out var arg))
@@ -566,10 +571,10 @@ namespace WixToolset.Core
566 { 571 {
567 foreach (var extension in extensions) 572 foreach (var extension in extensions)
568 { 573 {
569 //if (extension.ParseArgument(this, arg)) 574 if (extension.TryParseArgument(this, arg))
570 //{ 575 {
571 // return true; 576 return true;
572 //} 577 }
573 } 578 }
574 579
575 return false; 580 return false;