Skip to content

Commit

Permalink
Add ExitCode to ProcessLauncher and ExecPython tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
aelassas committed Nov 26, 2024
1 parent 413e997 commit 7fef1dc
Show file tree
Hide file tree
Showing 10 changed files with 38 additions and 16 deletions.
4 changes: 2 additions & 2 deletions samples/net/Wexflow/TasksSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
"Ping": [ {"Name": "server", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessInfo": [ {"Name": "processName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessKiller": [ {"Name": "processName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "ignoreExitCode", "Required": true, "Type": "bool", "List": [], "DefaultValue": "false"} ],
"Rmdir": [ {"Name": "folder", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ],
"ScssToCss": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ],
"SevenZip": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "zipFileName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ],
Expand Down Expand Up @@ -108,4 +108,4 @@
"Xslt": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "xsltPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "outputFormat", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "removeWexflowProcessingNodes", "Required": false, "Type": "bool", "List": [], "DefaultValue": "true"}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ],
"YamlToJson": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ],
"Zip": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "zipFileName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbComputerName", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbDomain", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbUsername", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "smbPassword", "Required": false, "Type": "string", "List": [], "DefaultValue": ""} ]
}
}
4 changes: 2 additions & 2 deletions samples/netcore/linux/Wexflow/TasksSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"Now": [ {"Name": "culture", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "format", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"Ping": [ {"Name": "server", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessInfo": [ {"Name": "processName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "ignoreExitCode", "Required": true, "Type": "bool", "List": [], "DefaultValue": "false"} ],
"Reddit": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"RedditListComments": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
"RedditListPosts": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
Expand Down Expand Up @@ -95,4 +95,4 @@
"YouTubeSearch": [{"Name": "user", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "applicationName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "apiKey", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "keyword", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}],
"YamlToJson": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""} ],
"Zip": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "zipFileName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ]
}
}
4 changes: 2 additions & 2 deletions samples/netcore/macos/Wexflow/TasksSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"Now": [ {"Name": "culture", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "format", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"Ping": [ {"Name": "server", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessInfo": [ {"Name": "processName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "ignoreExitCode", "Required": true, "Type": "bool", "List": [], "DefaultValue": "false"} ],
"Reddit": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"RedditListComments": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
"RedditListPosts": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
Expand Down Expand Up @@ -95,4 +95,4 @@
"YouTubeSearch": [{"Name": "user", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "applicationName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "apiKey", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "keyword", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}],
"YamlToJson": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""} ],
"Zip": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "zipFileName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ]
}
}
4 changes: 2 additions & 2 deletions samples/netcore/windows/Wexflow/TasksSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"Now": [ {"Name": "culture", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "format", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"Ping": [ {"Name": "server", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessInfo": [ {"Name": "processName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""} ],
"ProcessLauncher": [ {"Name": "selectFiles", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "processPath", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "processCmd", "Required": false, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "hideGui", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "generatesFiles", "Required": true, "Type": "bool", "List": [], "DefaultValue": ""}, {"Name": "ignoreExitCode", "Required": true, "Type": "bool", "List": [], "DefaultValue": "false"} ],
"Reddit": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ],
"RedditListComments": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
"RedditListPosts": [ {"Name": "appId", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "refreshToken", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""} ],
Expand Down Expand Up @@ -95,4 +95,4 @@
"YouTubeSearch": [{"Name": "user", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "applicationName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "apiKey", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "keyword", "Required": true, "Type": "string", "List": [], "DefaultValue": ""}, {"Name": "maxResults", "Required": false, "Type": "int", "List": [], "DefaultValue": ""}],
"YamlToJson": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""} ],
"Zip": [ {"Name": "selectFiles", "Required": true, "Type": "int", "List": [], "DefaultValue": ""}, {"Name": "zipFileName", "Required": true, "Type": "string", "List": [], "DefaultValue": ""} ]
}
}
11 changes: 8 additions & 3 deletions src/net/Wexflow.Tasks.ExecPython/ExecPython.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ public override TaskStatus Run()
{
try
{
Exec(pythonFile.Path);
var res = Exec(pythonFile.Path);
InfoFormat("The script {0} has been executed.", pythonFile.Path);
if (!atLeastOneSuccess)
if (res && !atLeastOneSuccess)
{
atLeastOneSuccess = true;
}
success &= res;
}
catch (ThreadAbortException)
{
Expand All @@ -59,7 +60,7 @@ public override TaskStatus Run()
return new TaskStatus(status);
}

private void Exec(string pyScriptPath)
private bool Exec(string pyScriptPath)
{
var startInfo = new ProcessStartInfo(PythonPath, pyScriptPath)
{
Expand All @@ -76,6 +77,10 @@ private void Exec(string pyScriptPath)
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
InfoFormat("ExitCode for {0}: {1}", pyScriptPath, process.ExitCode);

var res = process.ExitCode == 0;
return res;
}

private void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
Expand Down
6 changes: 5 additions & 1 deletion src/net/Wexflow.Tasks.ProcessLauncher/ProcessLauncher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class ProcessLauncher : Task
public bool HideGui { get; set; }
public bool GeneratesFiles { get; set; }
public bool LoadAllFiles { get; set; }
public bool IgnoreExitCode { get; set; }

private const string VAR_FILE_PATH = "$filePath";
private const string VAR_FILE_NAME = "$fileName";
Expand All @@ -29,6 +30,7 @@ public ProcessLauncher(XElement xe, Workflow wf)
HideGui = bool.Parse(GetSetting("hideGui"));
GeneratesFiles = bool.Parse(GetSetting("generatesFiles"));
LoadAllFiles = bool.Parse(GetSetting("loadAllFiles", "false"));
IgnoreExitCode = bool.Parse(GetSetting("ignoreExitCode", "false"));
}

public override TaskStatus Run()
Expand Down Expand Up @@ -157,8 +159,10 @@ private TaskStatus StartProcess(string processPath, string processCmd, bool hide
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
InfoFormat("ExitCode: {0}", process.ExitCode);

return new TaskStatus(Status.Success, false);
var status = process.ExitCode == 0 || IgnoreExitCode ? Status.Success : Status.Error;
return new TaskStatus(status, false);
}
catch (ThreadAbortException)
{
Expand Down
2 changes: 2 additions & 0 deletions src/net/Wexflow.Tasks.ProcessLauncher/ProcessLauncher.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,7 @@
<Setting name="generatesFiles" value="true|false" />
<!-- Optional and defaults to false. Indicates whether to load all the files generated in the temporary folder by the command or not.-->
<Setting name="loadAllFiles" value="true|false" />
<!-- Optional and defaults to false. Indicates whether to ignore exit code or not.-->
<Setting name="ignoreExitCode" value="true|false" />
</Task>
</Tasks>
11 changes: 8 additions & 3 deletions src/netcore/Wexflow.Tasks.ExecPython/ExecPython.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ public override Core.TaskStatus Run()
{
try
{
Exec(pythonFile.Path);
var res = Exec(pythonFile.Path);
InfoFormat("The script {0} has been executed.", pythonFile.Path);
if (!atLeastOneSuccess)
if (res && !atLeastOneSuccess)
{
atLeastOneSuccess = true;
}
success &= res;
}
catch (ThreadInterruptedException)
{
Expand Down Expand Up @@ -61,7 +62,7 @@ public override Core.TaskStatus Run()
return new Core.TaskStatus(status);
}

private void Exec(string pyScriptPath)
private bool Exec(string pyScriptPath)
{
ProcessStartInfo startInfo = new(PythonPath, pyScriptPath)
{
Expand All @@ -78,6 +79,10 @@ private void Exec(string pyScriptPath)
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
InfoFormat("ExitCode for {0}: {1}", pyScriptPath, process.ExitCode);

var res = process.ExitCode == 0;
return res;
}

private void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
Expand Down
6 changes: 5 additions & 1 deletion src/netcore/Wexflow.Tasks.ProcessLauncher/ProcessLauncher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public partial class ProcessLauncher : Task
public bool HideGui { get; set; }
public bool GeneratesFiles { get; set; }
public bool LoadAllFiles { get; set; }
public bool IgnoreExitCode { get; set; }

private const string VAR_FILE_PATH = "$filePath";
private const string VAR_FILE_NAME = "$fileName";
Expand All @@ -29,6 +30,7 @@ public ProcessLauncher(XElement xe, Workflow wf)
HideGui = bool.Parse(GetSetting("hideGui"));
GeneratesFiles = bool.Parse(GetSetting("generatesFiles"));
LoadAllFiles = bool.Parse(GetSetting("loadAllFiles", "false"));
IgnoreExitCode = bool.Parse(GetSetting("ignoreExitCode", "false"));
}

public override TaskStatus Run()
Expand Down Expand Up @@ -160,8 +162,10 @@ private TaskStatus StartProcess(string processPath, string processCmd, bool hide
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
InfoFormat("ExitCode: {0}", process.ExitCode);

return new TaskStatus(Status.Success, false);
var status = process.ExitCode == 0 || IgnoreExitCode ? Status.Success : Status.Error;
return new TaskStatus(status, false);
}
catch (ThreadInterruptedException)
{
Expand Down
Loading

0 comments on commit 7fef1dc

Please sign in to comment.