in src/DWScripter/Program.cs [248:327]
static Dictionary<string,string> GetParametersFromArguments (string[] args)
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
string ParametersList = "-S|-D|-E|-M|-O|-St|-Dt|-U|-P|-Ut|-Pt|-W|-F|-Fp|-X|-t";
List<string> ParametersHelp = new List<string> { "-help", "-?", "/?" };
List<string> ModeList = new List<string> { "FULL", "COMPARE", "COMPAREFROMFILE", "PERSISTSTRUCTURE" };
Regex Plist = new Regex(ParametersList);
string ParameterSwitch="";
string value="";
int SeparatorPosition;
for (var x = 0; x < args.Count(); x++)
{
SeparatorPosition = args[x].IndexOf(":");
if (SeparatorPosition != -1)
{
ParameterSwitch = args[x].Substring(0, SeparatorPosition);
value = args[x].Substring(SeparatorPosition + 1, args[x].Length - SeparatorPosition - 1);
}
else
{
ParameterSwitch = args[x];
value = "";
}
if (ParametersHelp.Contains(ParameterSwitch))
{
DisplayHelp();
Environment.Exit(0);
}
if (Plist.IsMatch(ParameterSwitch))
parameters.Add(ParameterSwitch, value);
}
if (parameters.ContainsKey("-M"))
{
if (!ModeList.Contains(parameters["-M"].ToUpper()))
{
Console.WriteLine("Value " + parameters["-M"] + "is not allowed. Only values FULL, COMPARE, COMPAREFROMFILE, PERSISTSTRUCTURE for parameter -M");
Environment.Exit(1);
}
}
else
{
Console.WriteLine("Argument -M mode missing");
Environment.Exit(1);
}
// check feature switch existence when work mode different from PERSISTSTRUCTURE or FULL mode
if (parameters["-M"].ToUpper() != "PERSISTSTRUCTURE" && parameters["-M"].ToUpper() != "FULL")
{
if (!parameters.ContainsKey("-F"))
{
Console.WriteLine("Argument -F is missing, fill it to continue");
Environment.Exit(1);
}
else
{
if (!parameters.ContainsKey("-D") && parameters["-F"].ToUpper() != "ALL")
{
Console.WriteLine("Argument -D is missing [Database Name], fill it to continue");
Environment.Exit(1);
}
if (!parameters.ContainsKey("-Fp") && parameters["-F"].ToUpper() != "ALL")
{
Console.WriteLine("Argument -Fp is missing [Filter file], fill it to continue");
Environment.Exit(1);
}
}
}
if (parameters.ContainsKey("-t"))
{
int? commandTimeout = GetCommandTimeout(parameters["-t"]);
}
return parameters;
}