Recurity.Blitzableiter.Program.ParseCMDArgs C# (CSharp) Method

ParseCMDArgs() private static method

Parses command line arguments
private static ParseCMDArgs ( string args ) : void
args string The arguments as string array
return void
        private static void ParseCMDArgs(string[] args)
        {
            Console.Write(" Arguments : ");
            for (int i = 0; i < args.Length; i++)
            {

                Console.Write(" [{0}] {1}", i + 1, args[i]);
            }

            Console.WriteLine(Environment.NewLine);

            int lastSwitch = 0;
            foreach (string s in args)
            {
                if (s.StartsWith("-")) // cmd switch
                {
                    switch (s)
                    {
                        case "-o": // Overwrite
                            Overwrite = true;
                            lastSwitch++;
                            break;

                        case "-r": // Recursive
                            Recursive = true;
                            lastSwitch++;
                            break;

                        case "-d": // Directories
                            Single = false;
                            lastSwitch++;
                            break;

                        case "-v": // Verbose
                            Verbose = true;
                            lastSwitch++;
                            break;

                        case "-vv": // Very verbose
                            Verbose = true;
                            VeryVerbose = true;
                            lastSwitch++;
                            break;
                        default:
                            Console.WriteLine(" ");
                            Console.WriteLine(" Invalid argument \"" + s + "\"");
                            return;

                    }
                }
                else // File, directory or invalid argumrent
                {
                    if (args.Length - lastSwitch > 2)
                    {
                        Console.WriteLine(" Too many arguments" + Environment.NewLine);
                        return;
                    }
                    else if (args.Length - lastSwitch < 1)
                    {
                        Console.WriteLine(" Too few arguments");
                        return;
                    }
                    else if (args.Length - lastSwitch == 2)
                    {
                        string name = args[lastSwitch];

                        if (File.Exists(name))
                        {
                            Files.Add(args[lastSwitch]);
                            Files.Add(args[lastSwitch + 1]);
                            break;
                        }
                        else if (Directory.Exists(name))
                        {
                            Directories.Add(args[lastSwitch]);
                            Directories.Add(args[lastSwitch + 1]);
                            break;
                        }
                        else
                        {
                            Console.WriteLine(" Invalid file or directory argument. The input file or directory must exist.");
                            return;
                        }

                    }
                    else if (args.Length - lastSwitch == 1)
                    {
                        if (File.Exists(args[args.Length - 1]))
                        {
                            Files.Add(args[args.Length - 1]);
                            break;
                        }
                        else if (Directory.Exists(args[args.Length - 1]))
                        {
                            Directories.Add(args[args.Length - 1]);
                            break;
                        }
                        else
                        {
                            Console.WriteLine(" Invalid file or directory argument. The input file or directory must exist.");
                            return;
                        }
                    }
                }
            }

            if (Verbose && VeryVerbose)
            {
                Verbose = true;
            }

            if (Single) // Single File
            {
                if (Overwrite)
                {
                    if (Files.Count != 1)
                    {
                        Console.WriteLine(" Invalid command line arguments. Try : bb -o /yourinputdirectory/yourinputfile.swf");
                        return;
                    }
                    else
                    {
                        try
                        {
                            ScanSingle(Files[0]);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(" " + e.Message);
                        }
                    }
                }
                else
                {
                    if (Files.Count != 2)
                    {
                        Console.WriteLine(" Invalid command line arguments. Try : bb /yourinputdirectory/yourinputfile.swf  /youroutputdirectory/youroutputfile.swf");
                        return;
                    }
                    else
                    {
                        try
                        {
                            ScanSingle(Files[0], Files[1]);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(" " + e.Message);
                        }
                    }
                }
            }
            else// Directories
            {
                if (Recursive)
                {
                    if (Overwrite)
                    {
                        if (Directories.Count != 1)
                        {
                            Console.WriteLine(" Invalid command line arguments. Try : bb -d -r -o /yourinputdirectory");
                            return;
                        }
                        else
                        {
                            try
                            {

                                ScanDir(Directories[0], true);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(" " + e.Message);
                            }
                        }

                    }
                    else// Overwrite
                    {
                        if (Directories.Count != 2)
                        {
                            Console.WriteLine(" Invalid command line arguments. Try : bb -d -r /yourinputdirectory /youroutputdirectory");
                            return;
                        }
                        else
                        {
                            try
                            {
                                ScanDir(Directories[0], Directories[1], true);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(" " + e.Message);
                            }
                        }
                    }
                }
                else// Top dir only
                {
                    if (Overwrite)
                    {
                        if (Directories.Count != 1)
                        {
                            Console.WriteLine(" Invalid command line arguments. Try : bb -d -o /yourinputdirectory");
                            return;
                        }
                        else
                        {
                            try
                            {
                                ScanDir(Directories[0], true);
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(" " + e.Message);
                            }
                        }

                    }
                    else// Overwrite
                    {
                        if (Directories.Count != 2)
                        {
                            Console.WriteLine(" Invalid command line arguments. Try : bb -d /yourinputdirectory /youroutputdirectory");
                            return;
                        }
                        else
                        {
                            ScanDir(Directories[0], Directories[1], true);
                        }
                    }
                }
            }
        }