/// <summary> /// Kitbags are a set of packages that contain reusable plugins. /// </summary> /// <param name="services">Service collection from Microsoft.Extensions</param> /// <param name="sectionName">Unique section name for registration</param> /// <returns></returns> public static IKitbagBuilder AddKitbag(this IServiceCollection services, IConfiguration?configuration = null, string sectionName = "App") { var builder = new KitbagBuilder(services, configuration); var properties = builder.GetSettings <AppProperties>(sectionName); builder.Services.AddMemoryCache(); builder.Services.AddSingleton(properties); Console.WriteLine($"App: {properties.Name} | Version: {properties.Version} is up and running"); return(builder); }
public static IKitbagBuilder AddDbUp(this IServiceCollection services, Action <ILoggingBuilder> loggingConfig, string appSettingFileName = "appsettings.json", string sectionName = "DbUp") { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(appSettingFileName, optional: true, reloadOnChange: true).Build(); services.AddSingleton <IConfiguration>(config); services.AddLogging(loggingConfig); var builder = new KitbagBuilder(services, config); if (!builder.TryRegisterKitBag(sectionName)) { return(builder); } var dbUpProperties = builder.GetSettings <DatabaseMigrationProperties>(sectionName); builder.Services.AddSingleton(dbUpProperties); builder.Services.AddSingleton <IMigrationService, DbUpMigrationService>(); builder.Services.AddSingleton <IAutoChangeService, AutoChangeService>(); return(builder); }