using RemSox.Processing; using RemSox.UI.CLI; namespace RemSox.UI.CLI.Commands; public sealed class SpawnTestProcessCommand : ICommand { public string Name => "spawn test"; public string Description => "Spawn the test process"; public void Execute(string? arguments, Action printLine) { int processId = ProcessManager.SpawnProcess(); printLine($"Spawned TestProcess with ID {processId}"); } } public sealed class ListProcessesCommand : ICommand { public string Name => "ps"; public string Description => "List running processes"; public void Execute(string? arguments, Action printLine) { IEnumerable processes = ProcessManager.GetAllProcesses(); printLine("Running processes:"); foreach (Process process in processes) { printLine($" ID: {process.Id}, Name: {process.Name}"); } } } public sealed class StopProcessCommand : ICommand { public string Name => "stop"; public string Description => "Stop a process by ID"; public void Execute(string? arguments, Action printLine) { string? idText = arguments; if (string.IsNullOrWhiteSpace(idText)) { printLine("Usage: stop "); return; } if (int.TryParse(idText, out int processId)) { ProcessManager.StopProcess(processId); printLine($"Stopped process with ID {processId}"); return; } printLine("Invalid process ID"); } }