ServerSetCommand.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Microsoft.Extensions.DependencyInjection;
  2. using RackPeek.Domain.Resources.Servers;
  3. using Spectre.Console;
  4. using Spectre.Console.Cli;
  5. namespace Shared.Rcl.Commands.Servers;
  6. public class ServerSetSettings : ServerNameSettings
  7. {
  8. [CommandOption("--ram <GB>")] public int RamGb { get; set; }
  9. [CommandOption("--ram_mts <MTs>")] public int RamMts { get; set; }
  10. [CommandOption("--ipmi")] public bool Ipmi { get; set; }
  11. }
  12. public class ServerSetCommand(
  13. IServiceProvider serviceProvider
  14. ) : AsyncCommand<ServerSetSettings>
  15. {
  16. public override async Task<int> ExecuteAsync(
  17. CommandContext context,
  18. ServerSetSettings settings,
  19. CancellationToken cancellationToken)
  20. {
  21. using var scope = serviceProvider.CreateScope();
  22. var useCase = scope.ServiceProvider.GetRequiredService<UpdateServerUseCase>();
  23. await useCase.ExecuteAsync(
  24. settings.Name,
  25. settings.RamGb,
  26. settings.RamMts,
  27. settings.Ipmi);
  28. AnsiConsole.MarkupLine($"[green]Server '{settings.Name}' updated.[/]");
  29. return 0;
  30. }
  31. }