Program.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Microsoft.AspNetCore.Components;
  2. using Microsoft.AspNetCore.Components.Web;
  3. using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
  4. using RackPeek.Domain;
  5. using RackPeek.Domain.Git;
  6. using RackPeek.Domain.Git.UseCases;
  7. using RackPeek.Domain.Git.Queries;
  8. using RackPeek.Domain.Persistence;
  9. using RackPeek.Domain.Persistence.Yaml;
  10. using Shared.Rcl;
  11. namespace RackPeek.Web.Viewer;
  12. public class Program {
  13. public static async Task Main(string[] args) {
  14. var builder = WebAssemblyHostBuilder.CreateDefault(args);
  15. builder.RootComponents.Add<App>("#app");
  16. builder.RootComponents.Add<HeadOutlet>("head::after");
  17. IServiceCollection services = builder.Services;
  18. builder.Services.AddScoped(sp => {
  19. NavigationManager nav = sp.GetRequiredService<NavigationManager>();
  20. return new HttpClient {
  21. BaseAddress = new Uri(nav.BaseUri)
  22. };
  23. });
  24. builder.Services.AddSingleton<IGitRepository>(new NullGitRepository());
  25. builder.Services.AddSingleton<IInitRepoUseCase, InitRepoUseCase>();
  26. builder.Services.AddSingleton<ICommitAllUseCase, CommitAllUseCase>();
  27. builder.Services.AddSingleton<IRestoreAllUseCase, RestoreAllUseCase>();
  28. builder.Services.AddSingleton<IPushUseCase, PushUseCase>();
  29. builder.Services.AddSingleton<IPullUseCase, PullUseCase>();
  30. builder.Services.AddSingleton<IAddRemoteUseCase, AddRemoteUseCase>();
  31. builder.Services.AddSingleton<IGetStatusQuery, GetStatusQuery>();
  32. builder.Services.AddSingleton<IGetBranchQuery, GetBranchQuery>();
  33. builder.Services.AddSingleton<IGetDiffQuery, GetDiffQuery>();
  34. builder.Services.AddSingleton<IGetChangedFilesQuery, GetChangedFilesQuery>();
  35. builder.Services.AddSingleton<IGetLogQuery, GetLogQuery>();
  36. builder.Services.AddSingleton<IGetSyncStatusQuery, GetSyncStatusQuery>();
  37. builder.Services.AddScoped<ITextFileStore, WasmTextFileStore>();
  38. var resources = new ResourceCollection();
  39. builder.Services.AddSingleton(resources);
  40. var yamlDir = builder.Configuration.GetValue<string>("RPK_YAML_DIR") ?? "config";
  41. var yamlFilePath = $"{yamlDir}/config.yaml";
  42. builder.Services.AddScoped<RackPeekConfigMigrationDeserializer>();
  43. builder.Services.AddScoped<IResourceYamlMigrationService, ResourceYamlMigrationService>();
  44. builder.Services.AddScoped<IResourceCollection>(sp =>
  45. new YamlResourceCollection(
  46. yamlFilePath,
  47. sp.GetRequiredService<ITextFileStore>(),
  48. sp.GetRequiredService<ResourceCollection>(),
  49. sp.GetRequiredService<IResourceYamlMigrationService>()));
  50. builder.Services.AddYamlRepos();
  51. builder.Services.AddCommands();
  52. builder.Services.AddScoped<IConsoleEmulator, ConsoleEmulator>();
  53. builder.Services.AddUseCases();
  54. builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
  55. await builder.Build().RunAsync();
  56. }
  57. }