GraphLogicalCommand.cs 810 B

12345678910111213141516171819202122
  1. using Microsoft.Extensions.DependencyInjection;
  2. using RackPeek.Domain.Graph.Serialisers;
  3. using RackPeek.Domain.Graph.UseCases;
  4. using Spectre.Console.Cli;
  5. namespace Shared.Rcl.Commands.Graph;
  6. public class GraphLogicalCommand(IServiceProvider serviceProvider) : AsyncCommand {
  7. protected override async Task<int> ExecuteAsync(
  8. CommandContext context,
  9. CancellationToken cancellationToken) {
  10. using IServiceScope scope = serviceProvider.CreateScope();
  11. BuildLogicalGraphUseCase useCase =
  12. scope.ServiceProvider.GetRequiredService<BuildLogicalGraphUseCase>();
  13. RackPeek.Domain.Graph.Graph graph = await useCase.ExecuteAsync();
  14. var mermaid = new MermaidSerialiser().Serialise(graph);
  15. System.Console.Out.Write(mermaid);
  16. return 0;
  17. }
  18. }