diff --git a/shell/Commands/Environment/EnvCommand.cs b/shell/Commands/Environment/EnvCommand.cs new file mode 100644 index 0000000..93fb17c --- /dev/null +++ b/shell/Commands/Environment/EnvCommand.cs @@ -0,0 +1,114 @@ +using System; +using System.Linq; + +namespace CMLeonOS.Commands.Environment +{ + public static class EnvCommand + { + public static void ProcessEnvCommand(string args, EnvironmentVariableManager envManager, Action showError) + { + string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + + if (parts.Length == 0) + { + envManager.ListVariables(); + return; + } + + string command = parts[0].ToLower(); + + switch (command) + { + case "list": + envManager.ListVariables(); + break; + case "see": + if (parts.Length >= 2) + { + string varName = parts[1]; + string varValue = envManager.GetVariable(varName); + if (varValue != null) + { + Console.WriteLine($" {varName}={varValue}"); + } + else + { + showError($"Error: Environment variable '{varName}' not found"); + } + } + else + { + showError("Error: Please specify variable name"); + showError("Usage: env see "); + } + break; + case "add": + if (parts.Length >= 3) + { + string varName = parts[1]; + string varValue = parts.Length > 2 ? string.Join(" ", parts.Skip(2).ToArray()) : ""; + + if (envManager.SetVariable(varName, varValue)) + { + Console.WriteLine($"Environment variable '{varName}' added"); + } + else + { + showError($"Error: Failed to add environment variable '{varName}'"); + } + } + else + { + showError("Error: Please specify variable name and value"); + showError("Usage: env add "); + } + break; + case "change": + if (parts.Length >= 3) + { + string varName = parts[1]; + string varValue = parts.Length > 2 ? string.Join(" ", parts.Skip(2).ToArray()) : ""; + + if (envManager.SetVariable(varName, varValue)) + { + Console.WriteLine($"Environment variable '{varName}' set to '{varValue}'"); + } + else + { + showError($"Error: Failed to set environment variable '{varName}'"); + } + } + else + { + showError("Error: Please specify variable name and value"); + showError("Usage: env change "); + } + break; + case "delete": + if (parts.Length >= 2) + { + string varName = parts[1]; + + if (envManager.DeleteVariable(varName)) + { + Console.WriteLine($"Environment variable '{varName}' deleted"); + } + else + { + showError($"Error: Environment variable '{varName}' not found"); + } + } + else + { + showError("Error: Please specify variable name"); + showError("Usage: env delete "); + } + break; + default: + showError("Error: Invalid env command"); + showError("Usage: env [list] | env see | env add | env change | env delete "); + break; + } + } + } +} diff --git a/shell/Shell.cs b/shell/Shell.cs index ff0f15c..9dbc150 100644 --- a/shell/Shell.cs +++ b/shell/Shell.cs @@ -596,108 +596,7 @@ namespace CMLeonOS public void ProcessEnvCommand(string args) { - string[] parts = args.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); - - if (parts.Length == 0) - { - envManager.ListVariables(); - return; - } - - string command = parts[0].ToLower(); - - switch (command) - { - case "list": - envManager.ListVariables(); - break; - case "see": - if (parts.Length >= 2) - { - string varName = parts[1]; - string varValue = envManager.GetVariable(varName); - if (varValue != null) - { - Console.WriteLine($" {varName}={varValue}"); - } - else - { - ShowError($"Error: Environment variable '{varName}' not found"); - } - } - else - { - ShowError("Error: Please specify variable name"); - ShowError("Usage: env see "); - } - break; - case "add": - if (parts.Length >= 3) - { - string varName = parts[1]; - string varValue = parts.Length > 2 ? string.Join(" ", parts.Skip(2).ToArray()) : ""; - - if (envManager.SetVariable(varName, varValue)) - { - Console.WriteLine($"Environment variable '{varName}' added"); - } - else - { - ShowError($"Error: Failed to add environment variable '{varName}'"); - } - } - else - { - ShowError("Error: Please specify variable name and value"); - ShowError("Usage: env add "); - } - break; - case "change": - if (parts.Length >= 3) - { - string varName = parts[1]; - string varValue = parts.Length > 2 ? string.Join(" ", parts.Skip(2).ToArray()) : ""; - - if (envManager.SetVariable(varName, varValue)) - { - Console.WriteLine($"Environment variable '{varName}' set to '{varValue}'"); - } - else - { - ShowError($"Error: Failed to set environment variable '{varName}'"); - } - } - else - { - ShowError("Error: Please specify variable name and value"); - ShowError("Usage: env change "); - } - break; - case "delete": - if (parts.Length >= 2) - { - string varName = parts[1]; - - if (envManager.DeleteVariable(varName)) - { - Console.WriteLine($"Environment variable '{varName}' deleted"); - } - else - { - ShowError($"Error: Environment variable '{varName}' not found"); - } - } - else - { - ShowError("Error: Please specify variable name"); - ShowError("Usage: env delete "); - } - break; - default: - ShowError("Error: Invalid env command"); - ShowError("Usage: env [list] | env see | env add | env change | env delete "); - break; - } + Commands.Environment.EnvCommand.ProcessEnvCommand(args, envManager, ShowError); } public void BackupSystem(string args)