static Dictionary GetParametersFromArguments()

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;
        }