コード例 #1
0
        private static CmdLineHandler SetUpCommandLineHandler(string[] args)
        {
            var clh = new CmdLineHandler();

            clh.AcceptOption("autoexit", false);
            clh.AcceptOption("autorun", false);
            clh.AcceptOption("assembly", true);
            clh.AcceptOption("recipe", true);
            clh.AcceptOption("xml", false);
            clh.AcceptOption("?", false);
            clh.AcceptOption("help", false);

            clh.AcceptOption("nodialogs", false);
            // hidden option so we can automatically test invalid command line
            // arguments [23aug09, ml]

            clh.Evaluate(args);
            return(clh);
        }
コード例 #2
0
        private int Execute(string[] args)
        {
            var result = 0;

            try {
                var clh = new CmdLineHandler();
                SetUpCommandLineOptions(clh);
                clh.Evaluate(args);

                if (!clh.IsValid())
                {
                    PrintUsage();
                    result = 1;
                }
                else if (HelpNeeded(clh))
                {
                    PrintUsage();
                    result = 0;
                }
                else
                {
                    IRecipe recipe = null;
                    if (clh.HasOption("recipe"))
                    {
                        if (clh.HasOption("assembly"))
                        {
                            Console.WriteLine("Option 'recipe' present, ignoring option 'assembly'.");
                        }
                        recipe = RecipeFactory.Load(clh.GetOptionValueFor("recipe"));
                        if (recipe == null)
                        {
                            Console.WriteLine(String.Format(
                                                  "Couldn't read recipe at location '{0}'.",
                                                  clh.GetOptionValueFor("recipe")));
                            result = 1;
                        }
                    }
                    else if (clh.HasOption("assembly"))
                    {
                        var filePathName = clh.GetOptionValueFor("assembly");
                        if (File.Exists(filePathName))
                        {
                            recipe = RecipeFactory.NewRecipe(string.Empty);
                            recipe.AddAssembly(filePathName);
                        }
                        else
                        {
                            Console.WriteLine("Error: Couldn't read assembly at location '{0}'.", filePathName);
                            PrintUsage();
                            result = 1;
                        }
                    }
                    if (recipe != null &&
                        result == 0)
                    {
                        result = ExecuteValidCommandLine(clh, recipe);
                    }
                }
            }
            catch (Exception ex) {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                Console.WriteLine("Internal error: " + ex.Message);
                Console.WriteLine(ex.StackTrace);
                result = 1;
            }
            Console.WriteLine("Done.");
            return(result);
        }