Ready to test
This commit is contained in:
.editorconfig.gitignore
.vscode
File-Folder-Helper.csprojHelpers
HelperDeleteEmptyDirectories.csHelperILMerge.csHelperLogMerge.csHelperRenameToOldMoveDeleteOld.csHelperSaveOrCopyContents.csHelperStart.csHelperTooLong.csHelperZipFilesByDate.cs
JenkinsfileModels
Phares/Shared/Models
Program.csappsettings.Development.jsonappsettings.Staging.jsonappsettings.jsonpackage.json
55
Helpers/HelperStart.cs
Normal file
55
Helpers/HelperStart.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
|
||||
namespace File_Folder_Helper.Helpers;
|
||||
|
||||
internal static class HelperStart
|
||||
{
|
||||
|
||||
internal static bool Start(string[] errorChecks, string[] successChecks, ProcessStartInfo processStartInfo, string errorFile)
|
||||
{
|
||||
bool result = false;
|
||||
string standardError = string.Empty;
|
||||
string standardOutput = string.Empty;
|
||||
StringBuilder stringBuilder = new();
|
||||
Process? process = Process.Start(processStartInfo);
|
||||
long breakAfter = DateTime.Now.AddSeconds(20).Ticks;
|
||||
for (short j = 0; j < short.MaxValue; j++)
|
||||
{
|
||||
if (process is null || process.HasExited || process.WaitForExit(500) || DateTime.Now.Ticks > breakAfter)
|
||||
break;
|
||||
}
|
||||
if (process is not null && processStartInfo.RedirectStandardOutput)
|
||||
{
|
||||
_ = stringBuilder.Append(process.StandardOutput.ReadToEnd());
|
||||
standardOutput = stringBuilder.ToString();
|
||||
if (string.IsNullOrEmpty(standardOutput))
|
||||
standardOutput = string.Concat(standardOutput);
|
||||
if (!string.IsNullOrEmpty(standardOutput))
|
||||
{
|
||||
result = (from l in successChecks where standardOutput.Contains(l) select 1).Any();
|
||||
if (result)
|
||||
result = !(from l in errorChecks where standardOutput.Contains(l) select 1).Any();
|
||||
}
|
||||
}
|
||||
if (process is not null && processStartInfo.RedirectStandardError)
|
||||
{
|
||||
standardError = process.StandardError.ReadToEnd();
|
||||
if (!string.IsNullOrEmpty(standardError))
|
||||
{
|
||||
if (result)
|
||||
{
|
||||
result = (from l in successChecks where standardError.Contains(l) select 1).Any();
|
||||
if (result)
|
||||
result = !(from l in errorChecks where standardError.Contains(l) select 1).Any();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!result)
|
||||
result = standardOutput == string.Empty && standardError == string.Empty;
|
||||
if (!result)
|
||||
File.WriteAllLines(errorFile, new string[] { standardOutput, Environment.NewLine, Environment.NewLine, standardError });
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user