ServerCpuSetCommand.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Microsoft.Extensions.DependencyInjection;
  2. using RackPeek.Domain.Resources.Hardware.Server.Cpu;
  3. using Spectre.Console;
  4. using Spectre.Console.Cli;
  5. namespace RackPeek.Commands.Server.Cpus;
  6. public class ServerCpuSetSettings : ServerNameSettings
  7. {
  8. [CommandOption("--index <INDEX>")]
  9. public int Index { get; set; }
  10. [CommandOption("--model <MODEL>")]
  11. public string Model { get; set; }
  12. [CommandOption("--cores <CORES>")]
  13. public int Cores { get; set; }
  14. [CommandOption("--threads <THREADS>")]
  15. public int Threads { get; set; }
  16. }
  17. public class ServerCpuSetCommand(IServiceProvider serviceProvider) : AsyncCommand<ServerCpuSetSettings>
  18. {
  19. public override async Task<int> ExecuteAsync(
  20. CommandContext context,
  21. ServerCpuSetSettings settings,
  22. CancellationToken cancellationToken)
  23. {
  24. using var scope = serviceProvider.CreateScope();
  25. var useCase = scope.ServiceProvider.GetRequiredService<UpdateCpuUseCase>();
  26. await useCase.ExecuteAsync(
  27. settings.Name,
  28. settings.Index,
  29. settings.Model,
  30. settings.Cores,
  31. settings.Threads);
  32. AnsiConsole.MarkupLine($"[green]CPU {settings.Index} updated on '{settings.Name}'.[/]");
  33. return 0;
  34. }
  35. }