using Fragalytics.Web; using Fragalytics.Web.Infrastructure; using Fragalytics.Web.Services; using Fragalytics.RenderWorker.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; var builder = Host.CreateApplicationBuilder(args); builder.Configuration.AddJsonFile("appsettings.json", optional: true); builder.Services.Configure(builder.Configuration.GetSection("Fragalytics")); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(serviceProvider => { var options = serviceProvider.GetRequiredService>().Value; return options.RenderWorker.Backend.Equals("sample-copy", StringComparison.OrdinalIgnoreCase) ? new SampleCopyRenderBackend(serviceProvider.GetRequiredService>()) : throw new InvalidOperationException($"Unknown render backend '{options.RenderWorker.Backend}'."); }); builder.Services.AddSingleton(); builder.Services.AddHostedService(); await builder.Build().RunAsync();