aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-02-28 19:46:34 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-02-28 19:46:34 +0200
commit18dafa9e98e171321d3847a208c0af5be6f57ef6 (patch)
tree94d44edbe93ad2c95e62179ec8e2b1da9ce4dd13 /Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
parent5f45be5bae69be7b7e916f02fb6d69b2db60e529 (diff)
downloadTango-18dafa9e98e171321d3847a208c0af5be6f57ef6.tar.gz
Tango-18dafa9e98e171321d3847a208c0af5be6f57ef6.zip
Implemented Transport Immediate mode on TCP and SignalR.
Implemented Tango.Console components.
Diffstat (limited to 'Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs')
-rw-r--r--Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs84
1 files changed, 59 insertions, 25 deletions
diff --git a/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs b/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
index 194ff8454..c4bdee0a8 100644
--- a/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
+++ b/Software/Visual_Studio/Tango.Console/ConsoleExecutionEngine.cs
@@ -33,56 +33,90 @@ namespace Tango.Console
{
if (parsedCommand.Arguments.Contains(":\\") && Directory.Exists(parsedCommand.Arguments))
{
- return new ConsoleCommandExecutionResult()
- {
- Output = String.Empty,
- WorkingFolder = parsedCommand.Arguments,
- };
+ return CreateResult(parsedCommand.Arguments, String.Empty);
}
else if (Directory.Exists(Path.Combine(command.WorkingFolder, parsedCommand.Arguments)))
{
- return new ConsoleCommandExecutionResult()
- {
- Output = String.Empty,
- WorkingFolder = Path.GetFullPath(Path.Combine(command.WorkingFolder, parsedCommand.Arguments)),
- };
+ return CreateResult(Path.GetFullPath(Path.Combine(command.WorkingFolder, parsedCommand.Arguments)), String.Empty);
}
else
{
- return new ConsoleCommandExecutionResult()
- {
- Output = "The directory does not exists.",
- };
+ return CreateResult(null, "The directory does not exists.");
}
}
+ String output = String.Empty;
+ String error = String.Empty;
+
var process = new Process();
process.StartInfo.CreateNoWindow = true;
- process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
- process.StartInfo.RedirectStandardInput = true;
- process.StartInfo.Arguments = "/C " + command.Command;
- //process.StartInfo.Verb = "runas";
-
if (command.WorkingFolder != null)
{
process.StartInfo.WorkingDirectory = command.WorkingFolder;
}
+ //process.StartInfo.Verb = "runas";
+
+ if (ConsoleDictionary.GetKnownCommands().Exists(x => x.Name.ToLower() == parsedCommand.Command))
+ {
+ process.StartInfo.FileName = "cmd.exe";
+ process.StartInfo.Arguments = "/C " + command.Command;
+ }
+ else
+ {
+ process.StartInfo.FileName = parsedCommand.Command;
+ process.StartInfo.Arguments = parsedCommand.Arguments;
+ }
process.Start();
- String output = process.StandardOutput.ReadToEnd();
- String error = process.StandardError.ReadToEnd();
+ bool hasGuid = false;
+
+ try
+ {
+ process.WaitForInputIdle(5000);
+ hasGuid = true;
+ }
+ catch { }
- return new ConsoleCommandExecutionResult()
+ if (!hasGuid)
{
- WorkingFolder = command.WorkingFolder,
- Output = String.IsNullOrWhiteSpace(error) ? output.Replace(command.WorkingFolder + ">", "") : error,
- };
+ output = process.StandardOutput.ReadToEnd();
+ error = process.StandardError.ReadToEnd();
+ }
+
+ return CreateResult(command.WorkingFolder, String.IsNullOrWhiteSpace(error) ? output.Replace(command.WorkingFolder + ">", "") : error);
});
}
+
+ private ConsoleCommandExecutionResult CreateResult(String workingFolder, String output)
+ {
+ ConsoleCommandExecutionResult result = new ConsoleCommandExecutionResult();
+ result.WorkingFolder = workingFolder;
+ result.Output = output;
+
+ foreach (var dir in Directory.GetDirectories(Path.GetFullPath(workingFolder)))
+ {
+ result.Suggestions.Add(new ConsoleSuggestion()
+ {
+ Type = ConsoleSuggestionType.Folder,
+ Name = Path.GetFileName(dir)
+ });
+ }
+
+ foreach (var file in Directory.GetFiles(Path.GetFullPath(workingFolder)))
+ {
+ result.Suggestions.Add(new ConsoleSuggestion()
+ {
+ Type = ConsoleSuggestionType.File,
+ Name = Path.GetFileName(file),
+ });
+ }
+
+ return result;
+ }
}
}