mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-20 11:44:59 +00:00
feature: log output of custom action if Wait for action exit
enabled (#1334)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
1dfb629cef
commit
119b0fe95c
2 changed files with 9 additions and 4 deletions
|
@ -27,7 +27,7 @@ namespace SourceGit.Commands
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RunAndWait(string repo, string file, string args, Action<string> outputHandler)
|
public static void RunAndWait(string repo, string file, string args, Models.ICommandLog log)
|
||||||
{
|
{
|
||||||
var start = new ProcessStartInfo();
|
var start = new ProcessStartInfo();
|
||||||
start.FileName = file;
|
start.FileName = file;
|
||||||
|
@ -40,20 +40,22 @@ namespace SourceGit.Commands
|
||||||
start.StandardErrorEncoding = Encoding.UTF8;
|
start.StandardErrorEncoding = Encoding.UTF8;
|
||||||
start.WorkingDirectory = repo;
|
start.WorkingDirectory = repo;
|
||||||
|
|
||||||
|
log?.AppendLine($"$ {file} {args}\n");
|
||||||
|
|
||||||
var proc = new Process() { StartInfo = start };
|
var proc = new Process() { StartInfo = start };
|
||||||
var builder = new StringBuilder();
|
var builder = new StringBuilder();
|
||||||
|
|
||||||
proc.OutputDataReceived += (_, e) =>
|
proc.OutputDataReceived += (_, e) =>
|
||||||
{
|
{
|
||||||
if (e.Data != null)
|
if (e.Data != null)
|
||||||
outputHandler?.Invoke(e.Data);
|
log?.AppendLine(e.Data);
|
||||||
};
|
};
|
||||||
|
|
||||||
proc.ErrorDataReceived += (_, e) =>
|
proc.ErrorDataReceived += (_, e) =>
|
||||||
{
|
{
|
||||||
if (e.Data != null)
|
if (e.Data != null)
|
||||||
{
|
{
|
||||||
outputHandler?.Invoke(e.Data);
|
log?.AppendLine(e.Data);
|
||||||
builder.AppendLine(e.Data);
|
builder.AppendLine(e.Data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -36,13 +36,16 @@ namespace SourceGit.ViewModels
|
||||||
_repo.SetWatcherEnabled(false);
|
_repo.SetWatcherEnabled(false);
|
||||||
ProgressDescription = "Run custom action ...";
|
ProgressDescription = "Run custom action ...";
|
||||||
|
|
||||||
|
var log = _repo.CreateLog(CustomAction.Name);
|
||||||
|
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
if (CustomAction.WaitForExit)
|
if (CustomAction.WaitForExit)
|
||||||
Commands.ExecuteCustomAction.RunAndWait(_repo.FullPath, CustomAction.Executable, _args, output => CallUIThread(() => ProgressDescription = output));
|
Commands.ExecuteCustomAction.RunAndWait(_repo.FullPath, CustomAction.Executable, _args, log);
|
||||||
else
|
else
|
||||||
Commands.ExecuteCustomAction.Run(_repo.FullPath, CustomAction.Executable, _args);
|
Commands.ExecuteCustomAction.Run(_repo.FullPath, CustomAction.Executable, _args);
|
||||||
|
|
||||||
|
log.Complete();
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue