private static async Task Main(string[] args) { ConfigureLogging(); CommandLineOverrides commandLineOverrides = null; var parser = new Parser( config => { config.CaseInsensitiveEnumValues = true; config.CaseSensitive = false; config.HelpWriter = System.Console.Out; config.IgnoreUnknownArguments = true; }) .ParseArguments <CommandLineOverrides>(args) .WithParsed(overrides => commandLineOverrides = overrides) .WithNotParsed( errs => { if (errs.IsHelp() || errs.IsVersion()) { Environment.ExitCode = 0; Environment.Exit(Environment.ExitCode); } System.Console.WriteLine("Invalid options were entered."); System.Console.WriteLine(errs.ToString()); Environment.ExitCode = 1; Environment.Exit(Environment.ExitCode); }); try { var configRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddCommandLine(args, CommandLineOverrides.SwitchingMapping()) .Build(); await SetOdsEndpoints(configRoot); var container = RegisterContainer(configRoot); await using var scope = container.BeginLifetimeScope(); var validator = container.Resolve <ISmokeTestConfigurationValidator>(); if (!validator.IsValid()) { throw new InvalidOperationException(validator.ErrorText); } var application = container.Resolve <ISmokeTestApplication>(); Environment.ExitCode = await application.Run(); } catch (Exception e) { Log.Error(e); Environment.ExitCode = 1; } finally { Log.Info($"Exit Code is {Environment.ExitCode}"); if (Debugger.IsAttached) { System.Console.WriteLine("Press enter to continue."); System.Console.ReadLine(); } }
private static async Task Main(string[] args) { ConfigureLogging(); CommandLineOverrides commandLineOverrides = null; var parser = new Parser( config => { config.CaseInsensitiveEnumValues = true; config.CaseSensitive = false; config.HelpWriter = System.Console.Out; config.IgnoreUnknownArguments = true; }) .ParseArguments <CommandLineOverrides>(args) .WithParsed(overrides => commandLineOverrides = overrides) .WithNotParsed( errs => { System.Console.WriteLine("Invalid options were entered."); System.Console.WriteLine(errs.ToString()); Environment.ExitCode = 1; Environment.Exit(Environment.ExitCode); }); try { var configRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddCommandLine(args, CommandLineOverrides.SwitchingMapping()) .Build(); // apply the command line args overrides for boolean values if (args.Contains("--include-stats")) { configRoot["IncludeStats"] = "true"; } if (args.Contains("--novalidation") || args.Contains("-n")) { configRoot["ForceMetadata"] = "true"; } if (args.Contains("--force") || args.Contains("-f")) { configRoot["ValidateSchema"] = "true"; } Environment.ExitCode = await LoadProcess.Run(configRoot); } catch (Exception ex) { Environment.ExitCode = 1; _log.Error(ex); } finally { _log.Info($"Exit Code is {Environment.ExitCode}"); if (Debugger.IsAttached) { System.Console.WriteLine("Press enter to continue."); System.Console.ReadLine(); } Environment.Exit(Environment.ExitCode); } }
private static async Task Main(string[] args) { ConfigureLogging(); CommandLineOverrides commandLineOverrides = null; var parser = new Parser( config => { config.CaseInsensitiveEnumValues = true; config.CaseSensitive = false; config.HelpWriter = System.Console.Out; config.IgnoreUnknownArguments = true; }) .ParseArguments <CommandLineOverrides>(args) .WithParsed(overrides => commandLineOverrides = overrides) .WithNotParsed( errs => { if (errs.IsHelp() || errs.IsVersion()) { Environment.ExitCode = 0; Environment.Exit(Environment.ExitCode); } System.Console.WriteLine("Invalid options were entered."); System.Console.WriteLine(errs.ToString()); Environment.ExitCode = 1; Environment.Exit(Environment.ExitCode); }); int exitCode = 0; try { var configRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddCommandLine(args, CommandLineOverrides.SwitchingMapping()) .Build(); await SetOdsEndpoints(configRoot); // configure DI container var container = RegisterContainer(configRoot); await using var scope = container.BeginLifetimeScope(); var validator = container.Resolve <IXmlLookupConfigurationValidator>(); if (!validator.IsValid()) { throw new InvalidOperationException(validator.ErrorText); } LogConfiguration(container.Resolve <XmlLookupConfiguration>()); // retrieve application var application = container.Resolve <XmlLookupApplication>(); // run application exitCode = await application.Run(); } catch (Exception ex) { exitCode = 1; Log.Error(ex); } finally { Environment.Exit(exitCode); } ILifetimeScope RegisterContainer(IConfiguration configuration) { var builder = new ContainerBuilder(); builder.RegisterInstance(configuration) .As <IConfiguration>() .As <IConfigurationRoot>() .SingleInstance(); builder.RegisterInstance(XmlLookupConfiguration.Create(configuration)) .As <IApiConfiguration>() .As <IDataConfiguration>() .As <IOAuthTokenConfiguration>() .As <IApiMetadataConfiguration>() .As <IXsdConfiguration>() .AsSelf() .SingleInstance(); builder.RegisterModule(new XmlLookupModule()); return(builder.Build()); }