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; if (options.RenderWorker.Backend.Equals(RenderBackendNames.SampleCopy, StringComparison.OrdinalIgnoreCase)) { return new SampleCopyRenderBackend(serviceProvider.GetRequiredService>()); } if (options.RenderWorker.Backend.Equals(RenderBackendNames.Cs2Scripted, StringComparison.OrdinalIgnoreCase)) { return new Cs2ScriptedRenderBackend( serviceProvider.GetRequiredService(), serviceProvider.GetRequiredService>()); } throw new InvalidOperationException($"Unknown render backend '{options.RenderWorker.Backend}'."); }); builder.Services.AddSingleton(); builder.Services.AddHostedService(); await builder.Build().RunAsync();