diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-02 00:46:11 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-02 00:46:11 -0800 |
| commit | 95f2f4425b900374c7d7b583ae810b096121b3c4 (patch) | |
| tree | 0ede0972e849bdc2c57e9535e31fbdd0df113f8d /src/WixToolset.Core/CommandLine/CommandLine.cs | |
| parent | 720c4a0db1a2fb2aa3e08e5c99d5198873e448ba (diff) | |
| download | wix-95f2f4425b900374c7d7b583ae810b096121b3c4.tar.gz wix-95f2f4425b900374c7d7b583ae810b096121b3c4.tar.bz2 wix-95f2f4425b900374c7d7b583ae810b096121b3c4.zip | |
Implement support for IExtensionCommandLine and IPreprocessorExtension
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; |
