The purpose of this class is to serve as an entry point into this application for testing processes. The bamboo integration would involve the use of a run configuration file which would match the app.config file.
        public int Execute()
        {
            if (Args.Length == 0)
            {
                Console.WriteLine(HELP_MESSAGE);
                return(1);
            }
            else if (Args.Length != 1)
            {
                Console.WriteLine(HELP_MESSAGE);
                return(1);
            }
            else
            {
                string arg        = Args[0];
                string configFile = null;
                foreach (var argPrefix in CONFIG_ARG_PREFIXES)
                {
                    if (arg.StartsWith(argPrefix))
                    {
                        configFile = arg.Substring(argPrefix.Length);
                        break;
                    }
                }

                if (String.IsNullOrEmpty(configFile))
                {
                    Console.WriteLine(HELP_MESSAGE);
                    return(1);
                }
                else
                {
                    if (!File.Exists(configFile))
                    {
                        Console.WriteLine(MISSING_CONFIG_FILE_MESSAGE, configFile);
                        return(1);
                    }

                    Configuration config = null;
                    try
                    {
                        ExeConfigurationFileMap map = new ExeConfigurationFileMap();
                        map.ExeConfigFilename = configFile;
                        config = ConfigurationManager.OpenMappedExeConfiguration(
                            map
                            , ConfigurationUserLevel.None
                            );
                    }
                    catch (ConfigurationErrorsException)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return(1);
                    }
                    if (config == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return(1);
                    }
                    ConfigurationSectionCollection sections = config.Sections;
                    if (sections == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return(1);
                    }
                    LinkCheckerConfigSection section = null;
                    try
                    {
                        section = (LinkCheckerConfigSection)sections.Get("linkCheckerConfig");
                    }
                    catch (InvalidCastException)
                    {
                        Console.WriteLine(MISSING_CONFIG_SECTIONS_MESSAGE);
                        return(1);
                    }
                    catch (ConfigurationErrorsException)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return(1);
                    }
                    if (section == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return(1);
                    }

                    WebSiteTestSuiteGenerator generator = new WebSiteTestSuiteGenerator(section);
                    generator.GenerateTests();
                }
            }

            return(0);
        }
        public int Execute()
        {
            if (Args.Length == 0)
            {
                Console.WriteLine(HELP_MESSAGE);
                return 1;
            }
            else if (Args.Length != 1)
            {
                Console.WriteLine(HELP_MESSAGE);
                return 1;
            }
            else
            {
                string arg = Args[0];
                string configFile = null;
                foreach (var argPrefix in CONFIG_ARG_PREFIXES)
                {
                    if (arg.StartsWith(argPrefix))
                    {
                        configFile = arg.Substring(argPrefix.Length);
                        break;
                    }
                }

                if (String.IsNullOrEmpty(configFile))
                {
                    Console.WriteLine(HELP_MESSAGE);
                    return 1;
                }
                else
                {
                    if (!File.Exists(configFile))
                    {
                        Console.WriteLine(MISSING_CONFIG_FILE_MESSAGE, configFile);
                        return 1;
                    }

                    Configuration config = null;
                    try
                    {
                        ExeConfigurationFileMap map = new ExeConfigurationFileMap();
                        map.ExeConfigFilename = configFile;
                        config = ConfigurationManager.OpenMappedExeConfiguration(
                                         map
                                         , ConfigurationUserLevel.None
                                     );
                    }
                    catch(ConfigurationErrorsException)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return 1;
                    }
                    if (config == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return 1;
                    }
                    ConfigurationSectionCollection sections = config.Sections;
                    if (sections == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return 1;
                    }
                    LinkCheckerConfigSection section = null;
                    try
                    {
                        section = (LinkCheckerConfigSection)sections.Get("linkCheckerConfig");
                    }
                    catch (InvalidCastException)
                    {
                        Console.WriteLine(MISSING_CONFIG_SECTIONS_MESSAGE);
                        return 1;
                    }
                    catch (ConfigurationErrorsException)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return 1;
                    }
                    if (section == null)
                    {
                        Console.WriteLine(CONFIG_FILE_ERROR_MESSAGE);
                        return 1;
                    }

                    WebSiteTestSuiteGenerator generator = new WebSiteTestSuiteGenerator(section);
                    generator.GenerateTests();
                }
            }

            return 0;
        }