diff options
Diffstat (limited to 'src/WixToolset.Core/CommandLine/CommandLineArguments.cs')
| -rw-r--r-- | src/WixToolset.Core/CommandLine/CommandLineArguments.cs | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs index 3f412611..456e19d7 100644 --- a/src/WixToolset.Core/CommandLine/CommandLineArguments.cs +++ b/src/WixToolset.Core/CommandLine/CommandLineArguments.cs | |||
| @@ -12,6 +12,11 @@ namespace WixToolset.Core.CommandLine | |||
| 12 | 12 | ||
| 13 | internal class CommandLineArguments : ICommandLineArguments | 13 | internal class CommandLineArguments : ICommandLineArguments |
| 14 | { | 14 | { |
| 15 | public CommandLineArguments(IWixToolsetServiceProvider serviceProvider) | ||
| 16 | { | ||
| 17 | this.Messaging = serviceProvider.GetService<IMessaging>(); | ||
| 18 | } | ||
| 19 | |||
| 15 | public string[] OriginalArguments { get; set; } | 20 | public string[] OriginalArguments { get; set; } |
| 16 | 21 | ||
| 17 | public string[] Arguments { get; set; } | 22 | public string[] Arguments { get; set; } |
| @@ -20,12 +25,7 @@ namespace WixToolset.Core.CommandLine | |||
| 20 | 25 | ||
| 21 | public string ErrorArgument { get; set; } | 26 | public string ErrorArgument { get; set; } |
| 22 | 27 | ||
| 23 | private IWixToolsetServiceProvider ServiceProvider { get; } | 28 | private IMessaging Messaging { get; } |
| 24 | |||
| 25 | public CommandLineArguments(IWixToolsetServiceProvider serviceProvider) | ||
| 26 | { | ||
| 27 | this.ServiceProvider = serviceProvider; | ||
| 28 | } | ||
| 29 | 29 | ||
| 30 | public void Populate(string commandLine) | 30 | public void Populate(string commandLine) |
| 31 | { | 31 | { |
| @@ -41,27 +41,25 @@ namespace WixToolset.Core.CommandLine | |||
| 41 | this.ProcessArgumentsAndParseExtensions(this.OriginalArguments); | 41 | this.ProcessArgumentsAndParseExtensions(this.OriginalArguments); |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | public ICommandLineParser Parse() | 44 | public ICommandLineParser Parse() => new CommandLineParser(this.Messaging, this.Arguments, this.ErrorArgument); |
| 45 | { | ||
| 46 | var messaging = this.ServiceProvider.GetService<IMessaging>(); | ||
| 47 | |||
| 48 | return new CommandLineParser(messaging, this.Arguments, this.ErrorArgument); | ||
| 49 | } | ||
| 50 | 45 | ||
| 51 | private void FlattenArgumentsWithResponseFilesIntoOriginalArguments(string[] commandLineArguments) | 46 | private void FlattenArgumentsWithResponseFilesIntoOriginalArguments(string[] commandLineArguments) |
| 52 | { | 47 | { |
| 53 | List<string> args = new List<string>(); | 48 | var args = new List<string>(); |
| 54 | 49 | ||
| 55 | foreach (var arg in commandLineArguments) | 50 | foreach (var arg in commandLineArguments) |
| 56 | { | 51 | { |
| 57 | if ('@' == arg[0]) | 52 | if (arg != null) |
| 58 | { | 53 | { |
| 59 | var responseFileArguments = CommandLineArguments.ParseResponseFile(arg.Substring(1)); | 54 | if ('@' == arg[0]) |
| 60 | args.AddRange(responseFileArguments); | 55 | { |
| 61 | } | 56 | var responseFileArguments = CommandLineArguments.ParseResponseFile(arg.Substring(1)); |
| 62 | else | 57 | args.AddRange(responseFileArguments); |
| 63 | { | 58 | } |
| 64 | args.Add(arg); | 59 | else |
| 60 | { | ||
| 61 | args.Add(arg); | ||
| 62 | } | ||
| 65 | } | 63 | } |
| 66 | } | 64 | } |
| 67 | 65 | ||
| @@ -103,7 +101,7 @@ namespace WixToolset.Core.CommandLine | |||
| 103 | { | 101 | { |
| 104 | string arguments; | 102 | string arguments; |
| 105 | 103 | ||
| 106 | using (StreamReader reader = new StreamReader(responseFile)) | 104 | using (var reader = new StreamReader(responseFile)) |
| 107 | { | 105 | { |
| 108 | arguments = reader.ReadToEnd(); | 106 | arguments = reader.ReadToEnd(); |
| 109 | } | 107 | } |
| @@ -131,7 +129,7 @@ namespace WixToolset.Core.CommandLine | |||
| 131 | // The current argument string being built; when completed it will be added to the list. | 129 | // The current argument string being built; when completed it will be added to the list. |
| 132 | var arg = new StringBuilder(); | 130 | var arg = new StringBuilder(); |
| 133 | 131 | ||
| 134 | for (int i = 0; i <= arguments.Length; i++) | 132 | for (var i = 0; i <= arguments.Length; i++) |
| 135 | { | 133 | { |
| 136 | if (i == arguments.Length || (Char.IsWhiteSpace(arguments[i]) && !insideQuote)) | 134 | if (i == arguments.Length || (Char.IsWhiteSpace(arguments[i]) && !insideQuote)) |
| 137 | { | 135 | { |
| @@ -182,10 +180,10 @@ namespace WixToolset.Core.CommandLine | |||
| 182 | var id = Environment.GetEnvironmentVariables(); | 180 | var id = Environment.GetEnvironmentVariables(); |
| 183 | 181 | ||
| 184 | var regex = new Regex("(?<=\\%)(?:[\\w\\.]+)(?=\\%)"); | 182 | var regex = new Regex("(?<=\\%)(?:[\\w\\.]+)(?=\\%)"); |
| 185 | MatchCollection matches = regex.Matches(arguments); | 183 | var matches = regex.Matches(arguments); |
| 186 | 184 | ||
| 187 | string value = String.Empty; | 185 | var value = String.Empty; |
| 188 | for (int i = 0; i <= (matches.Count - 1); i++) | 186 | for (var i = 0; i <= (matches.Count - 1); i++) |
| 189 | { | 187 | { |
| 190 | try | 188 | try |
| 191 | { | 189 | { |
| @@ -204,9 +202,6 @@ namespace WixToolset.Core.CommandLine | |||
| 204 | return arguments; | 202 | return arguments; |
| 205 | } | 203 | } |
| 206 | 204 | ||
| 207 | private static bool IsSwitchAt(string[] args, int index) | 205 | private static bool IsSwitchAt(string[] args, int index) => args.Length > index && !String.IsNullOrEmpty(args[index]) && ('/' == args[index][0] || '-' == args[index][0]); |
| 208 | { | ||
| 209 | return args.Length > index && !String.IsNullOrEmpty(args[index]) && ('/' == args[index][0] || '-' == args[index][0]); | ||
| 210 | } | ||
| 211 | } | 206 | } |
| 212 | } | 207 | } |
