diff --git a/src/laminar.cpp b/src/laminar.cpp index fb5e229..2a42f24 100644 --- a/src/laminar.cpp +++ b/src/laminar.cpp @@ -587,7 +587,7 @@ void Laminar::notifyConfigChanged() void Laminar::abortAll() { for(std::shared_ptr run : activeJobs) { - run->abort(); + run->abort(false); } } @@ -674,13 +674,13 @@ bool Laminar::tryStartRun(std::shared_ptr run, int queueIndex) { run->addScript((cfgDir/"jobs"/run->name+".run").string()); // job after-run script if(fs::exists(cfgDir/"jobs"/run->name+".after")) - run->addScript((cfgDir/"jobs"/run->name+".after").string()); + run->addScript((cfgDir/"jobs"/run->name+".after").string(), true); // per-node after-run script if(fs::exists(cfgDir/"nodes"/node->name+".after")) - run->addScript((cfgDir/"nodes"/node->name+".after").string()); + run->addScript((cfgDir/"nodes"/node->name+".after").string(), true); // global after-run script if(fs::exists(cfgDir/"after")) - run->addScript((cfgDir/"after").string()); + run->addScript((cfgDir/"after").string(), true); // add environment files if(fs::exists(cfgDir/"env")) @@ -699,7 +699,7 @@ bool Laminar::tryStartRun(std::shared_ptr run, int queueIndex) { // will be cancelled and the callback never called. Run* r = run.get(); r->timeout = srv->addTimeout(timeout, [r](){ - r->abort(); + r->abort(true); }); } } diff --git a/src/run.cpp b/src/run.cpp index 3b3186f..9f84a2f 100644 --- a/src/run.cpp +++ b/src/run.cpp @@ -128,17 +128,17 @@ bool Run::step() { return false; } -void Run::addScript(std::string scriptPath, std::string scriptWorkingDir) { - scripts.push({scriptPath, scriptWorkingDir}); +void Run::addScript(std::string scriptPath, std::string scriptWorkingDir, bool runOnAbort) { + scripts.push({scriptPath, scriptWorkingDir, runOnAbort}); } void Run::addEnv(std::string path) { env.push_back(path); } -void Run::abort() { - // clear all pending scripts - std::queue