コード例 #1
0
        public void All_options()
        {
            var cfg = new ArgsConfiguration(new [] { "miru", "migrate:up", "--verbose", "--environment", "Test" });

            cfg.Environment.ShouldBe("Test");
            cfg.Verbose.ShouldBeTrue();
            cfg.CliArgs.ShouldBe(new[] { "migrate:up" });
        }
コード例 #2
0
ファイル: MiruHost.cs プロジェクト: MiruFx/Miru
        public static IHostBuilder AddMiruHost(this IHostBuilder builder, params string[] args) =>
        builder
        .UseEnvironment("Development")
        .ConfigureHostConfiguration(cfg =>
        {
            cfg.AddEnvironmentVariables("MIRU_");
            cfg.AddCommandLine(args, new Dictionary <string, string>
            {
                { "-e", HostDefaults.EnvironmentKey },
                { "-p", "port" }
            });
        })
        .ConfigureSerilog(config =>
        {
            config
            .MinimumLevel.Override("Microsoft", LogEventLevel.Fatal)
            .MinimumLevel.Override("System", LogEventLevel.Fatal)
            .MinimumLevel.Override("Hangfire", LogEventLevel.Fatal)
            .MinimumLevel.Override("Miru", LogEventLevel.Fatal)
            .MinimumLevel.Override("Quartz", LogEventLevel.Fatal)
            .WriteTo.Console(outputTemplate: LoggerConfigurations.TimestampOutputTemplate);
        })
        .ConfigureAppConfiguration((hostingContext, cfg) =>
        {
            var env = hostingContext.HostingEnvironment.EnvironmentName;

            cfg.AddEnvironmentVariables(prefix: "MIRU_");
            cfg.AddYamlFile("appSettings.yml", optional: true, reloadOnChange: true);
            cfg.AddYamlFile($"appSettings.{env}.yml", optional: true, reloadOnChange: true);
        })
        .UseDefaultServiceProvider((context, options) =>
        {
            options.ValidateScopes = context.HostingEnvironment.IsDevelopmentOrTest();
        })
        .ConfigureServices((host, services) =>
        {
            var argsConfig = new ArgsConfiguration(args);

            // Host
            services.AddServiceCollection();
            services.AddSingleton(argsConfig);
            services.AddSingleton <MiruRunner>();
            services.AddSingleton <IMiruHost, WebMiruHost>();
            services.AddSingleton <IMiruHost>(sp => sp.GetService <ICliMiruHost>());

            // Consolables
            services.AddMiruCliHost();

            // AppConfig
            services.Configure <DatabaseOptions>(host.Configuration.GetSection("Database"));
            services.Configure <MailingOptions>(host.Configuration.GetSection("Mailing"));
            services.Configure <UrlOptions>(host.Configuration.GetSection("Url"));

            services.AddSingleton(sp => sp.GetRequiredService <IOptions <DatabaseOptions> >().Value);

            services.AddMiruApp();
        });
コード例 #3
0
 public MiruRunner(
     IEnumerable <IMiruHost> hosts,
     ArgsConfiguration argsConfig,
     MiruSolution solution,
     IHostEnvironment hostEnvironment)
 {
     _hosts           = hosts;
     _argsConfig      = argsConfig;
     _solution        = solution;
     _hostEnvironment = hostEnvironment;
 }
コード例 #4
0
        public void Is_running_miru_cli()
        {
            var cfg = new ArgsConfiguration(new [] { "miru", "migrate:up" });

            cfg.RunCli.ShouldBeTrue();
            cfg.CliArgs.ShouldBe(new[] { "migrate:up" });

            new ArgsConfiguration(new [] { "miru" })
            .RunCli.ShouldBeTrue();

            new ArgsConfiguration(new [] { "other", "miru" })
            .RunCli.ShouldBeFalse();

            new ArgsConfiguration(new string[] { })
            .RunCli.ShouldBeFalse();
        }
コード例 #5
0
ファイル: MiruHost.cs プロジェクト: joaofx/Miru
        public static IHostBuilder CreateMiruHost(params string[] args) =>
        new HostBuilder()
        .UseEnvironmentFromArgs(args)
        .ConfigureSerilog(config =>
        {
            config
            .MinimumLevel.Override("Microsoft", LogEventLevel.Fatal)
            .MinimumLevel.Override("System", LogEventLevel.Fatal)
            .MinimumLevel.Override("Hangfire", LogEventLevel.Fatal)
            .MinimumLevel.Override("Miru", LogEventLevel.Debug)
            .WriteTo.Console(outputTemplate: LoggerConfigurations.TimestampOutputTemplate);
        })
        .UseSolution()
        .ConfigureAppConfiguration((hostingContext, cfg) =>
        {
            cfg.AddConfigYml(hostingContext.HostingEnvironment.EnvironmentName);
        })
        .ConfigureServices((host, services) =>
        {
            var argsConfig = new ArgsConfiguration(args);

            // Host
            services.AddServiceCollection();
            services.AddSingleton(argsConfig);
            services.AddSingleton(App.Solution);
            services.AddTransient <ScopedServices, ScopedServices>();
            services.AddSingleton <MiruRunner>();
            services.AddSingleton <IMiruHost, WebMiruHost>();
            services.AddSingleton <IMiruHost, CliMiruHost>();

            // Consolables
            services.AddSingleton <MiruCommandCreator>();
            services.AddConsolables <CliMiruHost>();
            services.AddSingleton <IFileSystem, FileSystem>();
            services.AddSingleton <Maker, Maker>();

            // AppConfig
            services.Configure <DatabaseOptions>(host.Configuration.GetSection("Database"));
            services.Configure <MailingOptions>(host.Configuration.GetSection("Mailing"));
            services.AddSingleton(sp => sp.GetService <IOptions <DatabaseOptions> >().Value);

            services.AddSingleton <IMiruApp>(sp => new MiruApp(sp));
        });
コード例 #6
0
        private static void ValidateConfiguration(ArgsConfiguration configuration)
        {
            if (string.IsNullOrEmpty(configuration.TestRunnerPath))
            {
                Console.Error.WriteLine("Bad configuration: TestRunnerPath must be configured");
                Environment.Exit(ExitCodes.BadConfiguration);
            }

            if (configuration.Proxies == null || configuration.Proxies.Count <= 0)
            {
                Console.Error.WriteLine("Bad configuration: You must specify at least one proxy to use.");
                Environment.Exit(ExitCodes.BadConfiguration);
            }

            if (!File.Exists(configuration.TestRunnerPath))
            {
                Console.Error.WriteLine(
                    "Bad configuration: Path to TestRunner must be valid and file must exist ("
                    + configuration.TestRunnerPath + ").");
                Environment.Exit(ExitCodes.BadConfiguration);
            }
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: GavinWu/NUnit-retry
        private static void ValidateConfiguration(ArgsConfiguration configuration)
        {
            if (string.IsNullOrEmpty(configuration.TestRunnerPath))
            {
                Console.Error.WriteLine("Bad configuration: TestRunnerPath must be configured");
                Environment.Exit(ExitCodes.BadConfiguration);
            }

            if (configuration.Proxies == null || configuration.Proxies.Count <= 0)
            {
                Console.Error.WriteLine("Bad configuration: You must specify at least one proxy to use.");
                Environment.Exit(ExitCodes.BadConfiguration);
            }

            if (!File.Exists(configuration.TestRunnerPath))
            {
                Console.Error.WriteLine(
                    "Bad configuration: Path to TestRunner must be valid and file must exist ("
                    + configuration.TestRunnerPath + ").");
                Environment.Exit(ExitCodes.BadConfiguration);
            }
        }
コード例 #8
0
ファイル: CliMiruHost.cs プロジェクト: joaofx/Miru
 public CliMiruHost(IMiruApp app, MiruCommandCreator commandCreator, ArgsConfiguration argsConfig)
 {
     _app            = app;
     _commandCreator = commandCreator;
     _argsConfig     = argsConfig;
 }
コード例 #9
0
ファイル: CliMiruHost.cs プロジェクト: michelanjos/Miru
 public CliMiruHost(IMiruApp app, ArgsConfiguration argsConfig)
 {
     _app        = app;
     _argsConfig = argsConfig;
 }
コード例 #10
0
ファイル: CliMiruHost.cs プロジェクト: MiruFx/Miru
 public CliMiruHost(IEnumerable <Consolable> commands, ArgsConfiguration argsConfig, IMiruApp app)
 {
     _consolable = commands;
     _argsConfig = argsConfig;
     _app        = app;
 }