private static bool ValidateConfiguration(ManifestConfiguration config)
        {
            if (string.IsNullOrEmpty(config.RootDirectory) ||
                string.IsNullOrEmpty(config.ManifestFilePath))
            {
                return false;
            }

            if (config.CheckManifest && string.IsNullOrEmpty(config.ReportFilePath))
            {
                return false;
            }

            if (config.BuildManifest == true && config.CheckManifest == true)
            {
                return false;
            }

            if (config.BuildManifest == false && config.CheckManifest == false)
            {
                return false;
            }

            return true;
        }
        private static ManifestConfiguration ParseArguments(string[] args)
        {
            // Remove any dash prefix from arguments.
            for (int i = 0; i < args.Length; i++)
            {
                if (args[i].StartsWith("-"))
                {
                    string currentArg = args[i];
                    for (int j = 0; j < currentArg.Length; j++)
                    {
                        if (currentArg.Substring(j, 1) != "-")
                        {
                            args[i] = currentArg.Substring(j);
                            break;
                        }
                    }
                }
            }

            string rootDirectory = null;
            string manifestFilePath = null;
            string reportFilePath = null;
            bool build = false;
            bool check = false;

            if (args.Contains(DIRECTORY_ARG))
            {
                int directoryArgIndex = Array.IndexOf(args, DIRECTORY_ARG);

                if (directoryArgIndex != (args.Length - 1))
                {
                    rootDirectory = args[directoryArgIndex + 1];
                }
            }

            if (args.Contains(MANIFEST_FILE_ARG))
            {
                int fileArgIndex = Array.IndexOf(args, MANIFEST_FILE_ARG);

                if (fileArgIndex != (args.Length - 1))
                {
                    manifestFilePath = args[fileArgIndex + 1];
                }
            }

            if (args.Contains(REPORT_FILE_ARG))
            {
                int fileArgIndex = Array.IndexOf(args, REPORT_FILE_ARG);

                if (fileArgIndex != (args.Length - 1))
                {
                    reportFilePath = args[fileArgIndex + 1];
                }
            }

            if (args.Contains(BUILD_ARG))
            {
                build = true;
            }

            if (args.Contains(CHECK_ARG))
            {
                check = true;
            }

            ManifestConfiguration config = new ManifestConfiguration(rootDirectory, manifestFilePath, build, check, reportFilePath);

            return config;
        }