You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
using System; |
|
using System.Collections.Generic; |
|
|
|
namespace Unity.PlasticSCM.Editor.ProjectDownloader |
|
{ |
|
internal class CommandLineArguments |
|
{ |
|
internal static Dictionary<string, string> Build(string[] args) |
|
{ |
|
Dictionary<string, string> result = new Dictionary<string, string>( |
|
StringComparer.OrdinalIgnoreCase); |
|
|
|
if (args == null) |
|
return result; |
|
List<string> trimmedArguments = TrimArgs(args); |
|
|
|
int index = 1; |
|
|
|
while (true) |
|
{ |
|
if (index > trimmedArguments.Count - 1) |
|
break; |
|
|
|
if (IsKeyValueArgumentAtIndex(trimmedArguments, index)) |
|
{ |
|
result[trimmedArguments[index]] = trimmedArguments[index + 1]; |
|
index += 2; |
|
continue; |
|
} |
|
|
|
result[trimmedArguments[index]] = null; |
|
index += 1; |
|
} |
|
|
|
return result; |
|
} |
|
|
|
static List<string> TrimArgs(string[] args) |
|
{ |
|
List<string> trimmedArguments = new List<string>(); |
|
|
|
foreach (string argument in args) |
|
trimmedArguments.Add(argument.Trim()); |
|
|
|
return trimmedArguments; |
|
} |
|
|
|
static bool IsKeyValueArgumentAtIndex( |
|
List<string> trimmedArguments, |
|
int index) |
|
{ |
|
if (index + 1 > trimmedArguments.Count -1) |
|
return false; |
|
|
|
return !trimmedArguments[index + 1].StartsWith("-"); |
|
} |
|
} |
|
}
|
|
|