ServerSetCommand.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  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. [CommandOption("--ram <GB>")] public int RamGb { get; set; }
  8. [CommandOption("--ram_mts <MTs>")] public int RamMts { get; set; }
  9. [CommandOption("--ipmi")] public bool Ipmi { get; set; }
  10. }
  11. public class ServerSetCommand(
  12. IServiceProvider serviceProvider
  13. ) : AsyncCommand<ServerSetSettings> {
  14. public override async Task<int> ExecuteAsync(
  15. CommandContext context,
  16. ServerSetSettings settings,
  17. CancellationToken cancellationToken) {
  18. using IServiceScope scope = serviceProvider.CreateScope();
  19. UpdateServerUseCase useCase = scope.ServiceProvider.GetRequiredService<UpdateServerUseCase>();
  20. await useCase.ExecuteAsync(
  21. settings.Name,
  22. settings.RamGb,
  23. settings.RamMts,
  24. settings.Ipmi);
  25. AnsiConsole.MarkupLine($"[green]Server '{settings.Name}' updated.[/]");
  26. return 0;
  27. }
  28. }