/// <summary> /// Deploy args into FreeArgList and ConstrainedArgDict /// FreeArg first, ConstrainedArg later. /// </summary> /// <param name="args">The string style arg</param> private void DeployArg(string[] args) { bool constrainedArgFlag = false; string key = null; StringBuilder valueSb = new StringBuilder(); foreach (string arg in args) { if (!constrainedArgFlag) { if (arg[0] == '-') { constrainedArgFlag = true; key = arg.Substring(1).ToLower(); continue; } FreeArgList.Add(arg); } else { if (arg[0] == '-') { if (key != null) { ConstrainedArgDict.Add(key, valueSb.ToString()); valueSb.Clear(); } key = arg.Substring(1).ToLower(); } else { if (valueSb.Length != 0) { valueSb.Append(' '); } valueSb.Append(arg); } } } if (key != null) { ConstrainedArgDict.Add(key, valueSb.ToString()); } }
/// <summary> /// Set the argument type. /// </summary> private void SetArgType() { if (FreeArgList.Count == 0 && ConstrainedArgDict.Count == 0) { Category = ArgumentCategory.ConfigFile; ConfigFilePath = "Config.xml"; return; } if (FreeArgList.Count == 1 && FreeArgList[0].ToLower() != "magictest" && ConstrainedArgDict.Count == 0) { Category = ArgumentCategory.ConfigFile; ConfigFilePath = FreeArgList[0]; FreeArgList.Clear(); return; } if (ConstrainedArgDict.ContainsKey("config")) { Category |= ArgumentCategory.ConfigFile; ConfigFilePath = ConstrainedArgDict["config"]; } ConstrainedArgDict.Remove("config"); int index = -1; for (int i = 0; i < FreeArgList.Count; i++) { if (FreeArgList[i].ToLower() == "magictest") { index = i; Category |= ArgumentCategory.Test; } } if (index != -1) { FreeArgList.RemoveAt(index); } if (ConstrainedArgDict.Count > 0 || FreeArgList.Count > 0) { Category |= ArgumentCategory.ExternalArg; } }