using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using RackPeek.Domain; using RackPeek.Domain.Persistence; using RackPeek.Domain.Persistence.Yaml; using RackPeek.Domain.Resources; using RackPeek.Domain.Resources.Hardware; using RackPeek.Domain.Resources.Services; using RackPeek.Domain.Resources.SystemResources; 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"); var services = builder.Services; builder.Services.AddScoped(sp => { var nav = sp.GetRequiredService(); return new HttpClient { BaseAddress = new Uri(nav.BaseUri) }; }); 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(sp => new YamlResourceCollection( yamlFilePath, 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(); } }