Program.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Microsoft.AspNetCore.Components.Web;
  2. using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
  3. using RackPeek.Domain;
  4. using RackPeek.Domain.Persistence;
  5. using RackPeek.Domain.Persistence.Yaml;
  6. using RackPeek.Domain.Resources;
  7. using RackPeek.Domain.Resources.Hardware;
  8. using RackPeek.Domain.Resources.Services;
  9. using RackPeek.Domain.Resources.SystemResources;
  10. namespace RackPeek.Web.Viewer;
  11. public class Program
  12. {
  13. public static async Task Main(string[] args)
  14. {
  15. var builder = WebAssemblyHostBuilder.CreateDefault(args);
  16. builder.RootComponents.Add<App>("#app");
  17. builder.RootComponents.Add<HeadOutlet>("head::after");
  18. var services = builder.Services;
  19. builder.Services.AddScoped(sp =>
  20. new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
  21. builder.Services.AddScoped<ITextFileStore, WasmTextFileStore>();
  22. var resources = new ResourceCollection();
  23. builder.Services.AddSingleton(resources);
  24. var yamlDir = builder.Configuration.GetValue<string>("RPK_YAML_DIR") ?? "config";
  25. var yamlFilePath = $"{yamlDir}/config.yaml";
  26. builder.Services.AddScoped<IResourceCollection>(sp =>
  27. new YamlResourceCollection(
  28. yamlFilePath,
  29. sp.GetRequiredService<ITextFileStore>(),
  30. sp.GetRequiredService<ResourceCollection>()));
  31. services.AddScoped<IHardwareRepository, YamlHardwareRepository>();
  32. services.AddScoped<ISystemRepository, YamlSystemRepository>();
  33. services.AddScoped<IServiceRepository, YamlServiceRepository>();
  34. services.AddScoped<IResourceRepository, YamlResourceRepository>();
  35. builder.Services.AddCommands();
  36. builder.Services.AddScoped<IConsoleEmulator, ConsoleEmulator>();
  37. builder.Services.AddUseCases();
  38. builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
  39. await builder.Build().RunAsync();
  40. }
  41. }