using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using RackPeek.Domain; using RackPeek.Domain.Git; using RackPeek.Domain.Persistence; using RackPeek.Domain.Persistence.Yaml; using Shared.Rcl; namespace RackPeek.Web.Viewer; public class Program { public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); IServiceCollection services = builder.Services; builder.Services.AddScoped(sp => { NavigationManager nav = sp.GetRequiredService(); return new HttpClient { BaseAddress = new Uri(nav.BaseUri) }; }); builder.Services.AddGitServices(builder.Configuration); builder.Services.AddScoped(); var resources = new ResourceCollection(); builder.Services.AddSingleton(resources); var yamlDir = builder.Configuration.GetValue("RPK_YAML_DIR") ?? "config"; var yamlFilePath = $"{yamlDir}/config.yaml"; builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(sp => new YamlResourceCollection( yamlFilePath, sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService())); builder.Services.AddYamlRepos(); builder.Services.AddCommands(); builder.Services.AddScoped(); builder.Services.AddUseCases(); builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); await builder.Build().RunAsync(); } }