using Microsoft.Extensions.DependencyInjection; using RackPeek.Domain.Resources.Servers; using Spectre.Console; using Spectre.Console.Cli; namespace Shared.Rcl.Commands.Servers; public class ServerSetSettings : ServerNameSettings { [CommandOption("--ram ")] public int RamGb { get; set; } [CommandOption("--ram_mts ")] public int RamMts { get; set; } [CommandOption("--ipmi")] public bool Ipmi { get; set; } } public class ServerSetCommand( IServiceProvider serviceProvider ) : AsyncCommand { public override async Task ExecuteAsync( CommandContext context, ServerSetSettings settings, CancellationToken cancellationToken) { using IServiceScope scope = serviceProvider.CreateScope(); UpdateServerUseCase useCase = scope.ServiceProvider.GetRequiredService(); await useCase.ExecuteAsync( settings.Name, settings.RamGb, settings.RamMts, settings.Ipmi); AnsiConsole.MarkupLine($"[green]Server '{settings.Name}' updated.[/]"); return 0; } }