public int Run(Options options) { if (options.Scenario != null) { endpointProvider.ServerBaseUrl = options.ListenUrl; if (options.ClientUrl != null && options.ClientUrl.Length > 0) endpointProvider.ClientEndpoint = new Queue<string>(options.ClientUrl); endpointProvider.Username = options.Username; endpointProvider.Password = options.Password; endpointProvider.SkipAuthentication = options.SkipAuthentication; if (options.UseSoap11) { endpointProvider.MessageVersion = MessageVersion.Soap11WSAddressing10; } try { scenarioRunner.Run(options.Scenario, options.ScenarioArguments, options.ReceiverParty); output.Display(new ResultModel { Result = Result.Pass }); } catch (Exception e) { var baseException = e.GetBaseException(); var failException = baseException as FailException; logger.Error(string.Format("Exception:\n{0}", e)); if (failException != null) { logger.Error(string.Format("Wrapped Exception:\n{0}", failException.WrappedException)); } output.Display(new ResultModel { Result = Result.Fail, Message = (failException ?? e).ToString() }); return 1; } } else if (options.ListScenarios) { var helpText = new HelpText(); foreach (var scenario in scenarioTypeFinder.Methods.Keys) { helpText.AddPreOptionsLine(scenario); foreach (var method in scenarioTypeFinder.Methods[scenario]) { var parameters = new List<string>(); for (int i = 0; i < method.GetParameters().Length; i++) { parameters.Add(method.GetParameters()[i].Name); } helpText.AddPreOptionsLine(string.Format("|- {0}({1})", method.Name, string.Join(",", parameters))); } helpText.AddPreOptionsLine(Environment.NewLine); } output.String(helpText, log: false); return 1; } else if (options.ScenarioInfo != null) { throw new NotImplementedException(); } else { output.String(options.GetUsage(), log: false); return 1; } return 0; }
static int Main(string[] args) { var parser = GetParser(); var options = new Options(); if (!parser.ParseArguments(args, options)) { Console.Out.Write(options.GetUsage()); return 1; } SetupLogging(args, options); Container = CreateContainer(); var program = Container.Resolve<Program>(); return program.Run(options); }