From a9a41e5b8a511be454d834f1a927e2be93ca7a38 Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 26 Feb 2022 21:28:51 +0000 Subject: [PATCH] fixing config mapping to get migration working --- Selector.CLI/Command/HostCommand.cs | 1 + Selector.CLI/Extensions/ServiceExtensions.cs | 1 + Selector.CLI/Options.cs | 22 ++++++++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Selector.CLI/Command/HostCommand.cs b/Selector.CLI/Command/HostCommand.cs index 3e1ade3..9470799 100644 --- a/Selector.CLI/Command/HostCommand.cs +++ b/Selector.CLI/Command/HostCommand.cs @@ -70,6 +70,7 @@ namespace Selector.CLI Console.WriteLine("> Configuring..."); // CONFIG var config = ConfigureOptions(context, services); + context.Configuration.ConfigureOptionsInjection(services); Console.WriteLine("> Adding Services..."); // SERVICES diff --git a/Selector.CLI/Extensions/ServiceExtensions.cs b/Selector.CLI/Extensions/ServiceExtensions.cs index 1f8a508..489d917 100644 --- a/Selector.CLI/Extensions/ServiceExtensions.cs +++ b/Selector.CLI/Extensions/ServiceExtensions.cs @@ -93,6 +93,7 @@ namespace Selector.CLI.Extensions ); services.AddTransient(); + services.AddTransient(); services.AddHostedService(); } diff --git a/Selector.CLI/Options.cs b/Selector.CLI/Options.cs index f60d13f..781ed96 100644 --- a/Selector.CLI/Options.cs +++ b/Selector.CLI/Options.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; namespace Selector.CLI { @@ -12,15 +13,31 @@ namespace Selector.CLI config.GetSection(FormatKeys( new[] { RootOptions.Key, DatabaseOptions.Key})).Bind(options.DatabaseOptions); config.GetSection(FormatKeys( new[] { RootOptions.Key, RedisOptions.Key})).Bind(options.RedisOptions); config.GetSection(FormatKeys( new[] { RootOptions.Key, JobsOptions.Key})).Bind(options.JobOptions); - config.GetSection(FormatKeys( new[] { RootOptions.Key, JobsOptions.Key, ScrobbleWatcherJobOptions.Key})).Bind(options.JobOptions.Scrobble); + config.GetSection(FormatKeys( new[] { RootOptions.Key, JobsOptions.Key, ScrobbleWatcherJobOptions.Key })).Bind(options.JobOptions.Scrobble); } public static RootOptions ConfigureOptions(this IConfiguration config) { var options = config.GetSection(RootOptions.Key).Get(); + ConfigureOptions(options, config); + return options; - } + } + + public static RootOptions ConfigureOptionsInjection(this IConfiguration config, IServiceCollection services) + { + var options = config.GetSection(RootOptions.Key).Get(); + + services.Configure(config.GetSection(FormatKeys(new[] { RootOptions.Key, DatabaseOptions.Key }))); + services.Configure(config.GetSection(FormatKeys(new[] { RootOptions.Key, RedisOptions.Key }))); + services.Configure(config.GetSection(FormatKeys(new[] { RootOptions.Key, WatcherOptions.Key }))); + + services.Configure(config.GetSection(FormatKeys(new[] { RootOptions.Key, JobsOptions.Key }))); + services.Configure(config.GetSection(FormatKeys(new[] { RootOptions.Key, JobsOptions.Key, ScrobbleWatcherJobOptions.Key }))); + + return options; + } public static string FormatKeys(string[] args) => string.Join(":", args); } @@ -106,6 +123,7 @@ namespace Selector.CLI { public const string Key = "Scrobble"; + public bool Enabled { get; set; } = true; public TimeSpan InterJobDelay { get; set; } = TimeSpan.FromMinutes(5); public TimeSpan InterRequestDelay { get; set; } = TimeSpan.FromMilliseconds(100); public DateTime? From { get; set; } = DateTime.UtcNow.AddDays(-14);