private static void ParseArgs()

in code/Tools/Ops/ManageServerState/Program.cs [308:459]


        private static void ParseArgs(string[] args)
        {
            int i = 0;
            while (i < args.Length)
            {
                if (args[i].Equals("-All", StringComparison.CurrentCultureIgnoreCase))
                {
                    doAll = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Blobs", StringComparison.CurrentCultureIgnoreCase))
                {
                    doBlobs = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Clean", StringComparison.CurrentCultureIgnoreCase))
                {
                    doClean = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Create", StringComparison.CurrentCultureIgnoreCase))
                {
                    doCreate = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Force", StringComparison.CurrentCultureIgnoreCase))
                {
                    forceOperation = true;
                    i++;
                    continue;
                }
                else if (args[i].StartsWith("-Name=", StringComparison.CurrentCultureIgnoreCase))
                {
                    int prefixLen = "-Name=".Length;
                    environmentName = args[i].Substring(prefixLen);
                    i++;
                    continue;
                }
                else if (args[i].StartsWith("-NewVersion=", StringComparison.CurrentCultureIgnoreCase))
                {
                    int prefixLen = "-NewVersion=".Length;
                    newVersion = args[i].Substring(prefixLen);
                    i++;
                    continue;
                }
                else if (args[i].StartsWith("-OldVersion=", StringComparison.CurrentCultureIgnoreCase))
                {
                    int prefixLen = "-OldVersion=".Length;
                    oldVersion = args[i].Substring(prefixLen);
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Queues", StringComparison.CurrentCultureIgnoreCase))
                {
                    doQueues = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Redis", StringComparison.CurrentCultureIgnoreCase))
                {
                    doRedis = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Search", StringComparison.CurrentCultureIgnoreCase))
                {
                    doSearch = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-UpgradeStoreVersion", StringComparison.CurrentCultureIgnoreCase))
                {
                    doUpgradeStoreVersion = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Tables", StringComparison.CurrentCultureIgnoreCase))
                {
                    doTables = true;
                    i++;
                    continue;
                }
                else if (args[i].Equals("-Logs", StringComparison.CurrentCultureIgnoreCase))
                {
                    doLogs = true;
                    i++;
                    continue;
                }
                else
                {
                    // default case
                    Console.WriteLine("Unrecognized parameter: {0}", args[i]);
                    i++;
                }
            }

            if (string.IsNullOrWhiteSpace(environmentName))
            {
                Console.WriteLine("Usage error: must specify name of environment");
                Usage();
                Environment.Exit(0);
            }

            if (!(doClean || doCreate || doUpgradeStoreVersion))
            {
                Console.WriteLine("Usage error: must specify an action of clean, create, or upgrade store version");
                Usage();
                Environment.Exit(0);
            }

            if (doClean && doCreate)
            {
                Console.WriteLine("Usage error: cannot perform clean and create actions");
                Usage();
                Environment.Exit(0);
            }

            if (doClean && doUpgradeStoreVersion)
            {
                Console.WriteLine("Usage error: cannot perform clean and upgrade actions");
                Usage();
                Environment.Exit(0);
            }

            if (doCreate && doUpgradeStoreVersion)
            {
                Console.WriteLine("Usage error: cannot perform create and upgrade actions");
                Usage();
                Environment.Exit(0);
            }

            // if action is clean or create, then must specify target objects for the action
            if (!doUpgradeStoreVersion && !(doAll || doBlobs || doQueues || doRedis || doSearch || doTables || doLogs))
            {
                Console.WriteLine("Usage error: must specify which objects to clean or create");
                Usage();
                Environment.Exit(0);
            }

            if (doUpgradeStoreVersion && (oldVersion == null || newVersion == null))
            {
                Console.WriteLine("Usage error: must specify old version and new version when upgrading the store version");
                Usage();
                Environment.Exit(0);
            }

            return;
        }