aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/CommandLine/CommandLineArguments.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/CommandLine/CommandLineArguments.cs')
-rw-r--r--src/WixToolset.Core/CommandLine/CommandLineArguments.cs53
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}