diff options
Diffstat (limited to 'src/WixToolset.Core/CommandLine/CommandLine.cs')
-rw-r--r-- | src/WixToolset.Core/CommandLine/CommandLine.cs | 29 |
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; |