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" }); }
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(); });
public MiruRunner( IEnumerable <IMiruHost> hosts, ArgsConfiguration argsConfig, MiruSolution solution, IHostEnvironment hostEnvironment) { _hosts = hosts; _argsConfig = argsConfig; _solution = solution; _hostEnvironment = hostEnvironment; }
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(); }
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)); });
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); } }
public CliMiruHost(IMiruApp app, MiruCommandCreator commandCreator, ArgsConfiguration argsConfig) { _app = app; _commandCreator = commandCreator; _argsConfig = argsConfig; }
public CliMiruHost(IMiruApp app, ArgsConfiguration argsConfig) { _app = app; _argsConfig = argsConfig; }
public CliMiruHost(IEnumerable <Consolable> commands, ArgsConfiguration argsConfig, IMiruApp app) { _consolable = commands; _argsConfig = argsConfig; _app = app; }