in src/common/details/commands/runjob_command.cs [32:152]
private bool DoRunJob()
{
CheckPath();
var quiet = _values.GetOrDefault("x.quiet", false);
var args = _values.GetOrEmpty("run.input.post.args").Replace(';', ' ');
var preArgs = _values.GetOrEmpty("run.input.pre.args").Replace(';', ' ');
var process = _values.GetOrEmpty("run.input.process");
var command = _values.GetOrEmpty($"run.input.{Program.Name}.command");
var commandArgs = _values.GetOrEmpty($"run.input.{Program.Name}.post.command.args").Replace(';', ' ');
var preCommandArgs = _values.GetOrEmpty($"run.input.{Program.Name}.pre.command.args").Replace(';', ' ');
var job = _values.GetOrEmpty($"run.input.{Program.Name}.job");
var jobArgs = _values.GetOrEmpty($"run.input.{Program.Name}.post.job.args").Replace(';', ' ');
var preJobArgs = _values.GetOrEmpty($"run.input.{Program.Name}.pre.job.args").Replace(';', ' ');
var line = _values.GetOrEmpty("run.input.line");
var lineArgs = _values.GetOrEmpty("run.input.post.line.args").Replace(';', ' ');
var preLineArgs = _values.GetOrEmpty("run.input.pre.line.args").Replace(';', ' ');
var script = _values.GetOrEmpty("run.input.script");
var scriptArgs = _values.GetOrEmpty("run.input.post.script.args").Replace(';', ' ');
var preScriptArgs = _values.GetOrEmpty("run.input.pre.script.args").Replace(';', ' ');
var file = _values.GetOrEmpty("run.input.file");
var fileArgs = _values.GetOrEmpty("run.input.post.file.args").Replace(';', ' ');
var preFileArgs = _values.GetOrEmpty("run.input.pre.file.args").Replace(';', ' ');
var item = _values.GetOrEmpty("run.input.item");
var itemArgs = _values.GetOrEmpty("run.input.post.item.args").Replace(';', ' ');
var preItemArgs = _values.GetOrEmpty("run.input.pre.item.args").Replace(';', ' ');
var inputPath = _values.GetOrDefault("x.input.path", Directory.GetCurrentDirectory())!;
var processOk = !string.IsNullOrEmpty(process);
var commandOk = !string.IsNullOrEmpty(command);
var scriptOk = !string.IsNullOrEmpty(script);
var fileOk = !string.IsNullOrEmpty(file);
var jobOk = !string.IsNullOrEmpty(job);
var app = processOk && process == Program.Name;
if (app && jobOk && !job.StartsWith("@")) job = $"@{job}";
var startPath = UpdateJobStartPath(ref job, inputPath);
if (!processOk && scriptOk) processOk = UpdateProcessIfFileNotExist(script, ref process);
if (!processOk && commandOk) processOk = UpdateProcessIfFileNotExist(command, ref process);
if (!processOk && fileOk) processOk = UpdateProcessIfFileNotExist(file, ref process);
var cmd = processOk && process == "cmd";
var bash = processOk && process == "bash";
var start = "";
var startArgs = "";
if (app)
{
start = process;
startArgs = $"{preCommandArgs} {command} {commandArgs}".Trim();
startArgs = $"{startArgs} {preJobArgs} {job} {jobArgs}".Trim();
startArgs = $"{startArgs} {preFileArgs} {file} {fileArgs}".Trim();
startArgs = $"{startArgs} {preLineArgs} {line} {lineArgs}".Trim();
startArgs = $"{startArgs} {preItemArgs} {item} {itemArgs}".Trim();
startArgs = $"{preArgs} {startArgs} {args}".Trim();
}
else if (processOk)
{
start = process;
startArgs = $"{preScriptArgs} {script} {scriptArgs}".Trim();
startArgs = $"{startArgs} {preFileArgs} {file} {fileArgs}".Trim();
startArgs = $"{startArgs} {preLineArgs} {line} {lineArgs}".Trim();
startArgs = $"{startArgs} {preItemArgs} {item} {itemArgs}".Trim();
startArgs = $"{preArgs} {startArgs} {args}".Trim();
if (cmd && !startArgs.StartsWith("/c")) startArgs = $"/c {startArgs}";
if (bash && !startArgs.StartsWith("-lic")) startArgs = $"-lic \"{startArgs}\"";
}
else if (scriptOk)
{
start = script;
startArgs = $"{scriptArgs}".Trim();
startArgs = $"{startArgs} {preFileArgs} {file} {fileArgs}".Trim();
startArgs = $"{startArgs} {preLineArgs} {line} {lineArgs}".Trim();
startArgs = $"{startArgs} {preItemArgs} {item} {itemArgs}".Trim();
startArgs = $"{preArgs} {startArgs} {args}".Trim();
}
else if (fileOk)
{
start = file;
startArgs = $"{fileArgs}".Trim();
startArgs = $"{startArgs} {preLineArgs} {line} {lineArgs}".Trim();
startArgs = $"{startArgs} {preItemArgs} {item} {itemArgs}".Trim();
startArgs = $"{preArgs} {startArgs} {args}".Trim();
}
else if (quiet)
{
return true;
}
else
{
_values.AddThrowError(
"WARNING:", $"Missing arguments; requires one of process, command, script, file, or job!",
"",
"TRY:", $"{Program.Name} run --command COMMAND --args ARGS",
$"{Program.Name} run --script SCRIPT --args ARGS",
$"{Program.Name} run --job JOB",
"",
"SEE:", $"{Program.Name} help run");
}
var retries = _values.GetOrDefault("run.retries", 0);
var timeout = _values.GetOrDefault("run.timeout", 86400000);
var expected = _values.GetOrEmpty("run.output.expect.regex");
var notExpected = _values.GetOrEmpty("run.output.not.expect.regex");
var autoExpect = _values.GetOrDefault("run.output.auto.expect.regex", false);
return DoRunJob(start.Trim(), startArgs.Trim(), startPath, expected, notExpected, autoExpect, timeout, retries);
}