diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs b/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs index c4bdee0a8..02b58a658 100644 --- a/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs +++ b/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs @@ -5,6 +5,7 @@ using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using Tango.Console.Network; namespace Tango.Console { @@ -15,19 +16,19 @@ namespace Tango.Console public String Command { get; set; } public String Arguments { get; set; } - public ParsedCommand(ConsoleCommandDTO dto) + public ParsedCommand(ConsoleCommandRequest request) { - String[] s = dto.Command.Split(' '); + String[] s = request.Command.Split(' '); Command = s.First(); Arguments = String.Join(" ", s.Skip(1)); } } - public Task<ConsoleCommandExecutionResult> Execute(ConsoleCommandDTO command) + public Task<ConsoleCommandExecutionResult> Execute(ConsoleCommandRequest request) { return Task.Factory.StartNew<ConsoleCommandExecutionResult>(() => { - ParsedCommand parsedCommand = new ParsedCommand(command); + ParsedCommand parsedCommand = new ParsedCommand(request); if (parsedCommand.Command.ToLower() == "cd") { @@ -35,9 +36,9 @@ namespace Tango.Console { return CreateResult(parsedCommand.Arguments, String.Empty); } - else if (Directory.Exists(Path.Combine(command.WorkingFolder, parsedCommand.Arguments))) + else if (Directory.Exists(Path.Combine(request.WorkingFolder, parsedCommand.Arguments))) { - return CreateResult(Path.GetFullPath(Path.Combine(command.WorkingFolder, parsedCommand.Arguments)), String.Empty); + return CreateResult(Path.GetFullPath(Path.Combine(request.WorkingFolder, parsedCommand.Arguments)), String.Empty); } else { @@ -54,16 +55,16 @@ namespace Tango.Console process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo.RedirectStandardError = true; process.StartInfo.RedirectStandardOutput = true; - if (command.WorkingFolder != null) + if (request.WorkingFolder != null) { - process.StartInfo.WorkingDirectory = command.WorkingFolder; + process.StartInfo.WorkingDirectory = request.WorkingFolder; } //process.StartInfo.Verb = "runas"; - if (ConsoleDictionary.GetKnownCommands().Exists(x => x.Name.ToLower() == parsedCommand.Command)) + if (ConsoleDictionary.GetKnownCommands().Exists(x => x.Name.ToLower() == parsedCommand.Command.ToLower())) { process.StartInfo.FileName = "cmd.exe"; - process.StartInfo.Arguments = "/C " + command.Command; + process.StartInfo.Arguments = "/C " + request.Command; } else { @@ -88,34 +89,42 @@ namespace Tango.Console error = process.StandardError.ReadToEnd(); } - return CreateResult(command.WorkingFolder, String.IsNullOrWhiteSpace(error) ? output.Replace(command.WorkingFolder + ">", "") : error); + return CreateResult(request.WorkingFolder, String.IsNullOrWhiteSpace(error) ? output.Replace(request.WorkingFolder + ">", "") : error); }); } - private ConsoleCommandExecutionResult CreateResult(String workingFolder, String output) + public static List<ConsoleSuggestion> GetSuggestions(String folder) { - ConsoleCommandExecutionResult result = new ConsoleCommandExecutionResult(); - result.WorkingFolder = workingFolder; - result.Output = output; + List<ConsoleSuggestion> suggestions = new List<ConsoleSuggestion>(); - foreach (var dir in Directory.GetDirectories(Path.GetFullPath(workingFolder))) + foreach (var dir in Directory.GetDirectories(Path.GetFullPath(folder))) { - result.Suggestions.Add(new ConsoleSuggestion() + suggestions.Add(new ConsoleSuggestion() { Type = ConsoleSuggestionType.Folder, Name = Path.GetFileName(dir) }); } - foreach (var file in Directory.GetFiles(Path.GetFullPath(workingFolder))) + foreach (var file in Directory.GetFiles(Path.GetFullPath(folder))) { - result.Suggestions.Add(new ConsoleSuggestion() + suggestions.Add(new ConsoleSuggestion() { Type = ConsoleSuggestionType.File, Name = Path.GetFileName(file), }); } + return suggestions; + } + + private ConsoleCommandExecutionResult CreateResult(String workingFolder, String output) + { + ConsoleCommandExecutionResult result = new ConsoleCommandExecutionResult(); + result.WorkingFolder = workingFolder; + result.Output = output; + result.Suggestions.AddRange(GetSuggestions(workingFolder)); + return result; } } |
