4
0

ServiceAddCommand.cs 1002 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System.ComponentModel;
  2. using Microsoft.Extensions.DependencyInjection;
  3. using RackPeek.Domain.Resources.Services.UseCases;
  4. using Spectre.Console;
  5. using Spectre.Console.Cli;
  6. namespace RackPeek.Commands.Services;
  7. public class ServiceAddSettings : CommandSettings
  8. {
  9. [CommandArgument(0, "<name>")]
  10. [Description("The name of the service.")]
  11. public string Name { get; set; } = default!;
  12. }
  13. public class ServiceAddCommand(
  14. IServiceProvider serviceProvider
  15. ) : AsyncCommand<ServiceAddSettings>
  16. {
  17. public override async Task<int> ExecuteAsync(
  18. CommandContext context,
  19. ServiceAddSettings settings,
  20. CancellationToken cancellationToken)
  21. {
  22. using var scope = serviceProvider.CreateScope();
  23. var useCase = scope.ServiceProvider.GetRequiredService<AddServiceUseCase>();
  24. await useCase.ExecuteAsync(
  25. settings.Name
  26. );
  27. AnsiConsole.MarkupLine($"[green]Service '{settings.Name}' added.[/]");
  28. return 0;
  29. }
  30. }