Ejemplo n.º 1
0
        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();
                }
            }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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());
            }