aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2020-03-15 16:22:40 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2020-03-15 16:22:40 +0200
commite5accfce2c661fab649bb57c33b63c679a67e60c (patch)
tree1f29c4d77fd8e70736f4745b86a30abcf9bb3fd0 /Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
parent56678ae530fe45b0880053793ab46f47051e4dc6 (diff)
parentb188d7bfd91062f65474bd139bb8a434694f117b (diff)
downloadTango-e5accfce2c661fab649bb57c33b63c679a67e60c.tar.gz
Tango-e5accfce2c661fab649bb57c33b63c679a67e60c.zip
merge
Diffstat (limited to 'Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs')
-rw-r--r--Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs47
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;
}
}