diff options
Diffstat (limited to 'util/runners.py')
| -rw-r--r-- | util/runners.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/util/runners.py b/util/runners.py new file mode 100644 index 0000000..9252d86 --- /dev/null +++ b/util/runners.py @@ -0,0 +1,29 @@ +import os +import re +from util.exceptions import StepFailedError + +HOME = os.getenv("HOME") + + +def run_step(step): + step_type = step["=="] + + if step_type == "run": + do_run(step["command"]) + elif step_type == "link": + do_link(step["from"], step["to"]) + + +def do_run(command): + print(f"! {command}") + if not os.system(command) == 0: + raise StepFailedError("Non-zero return code") + + +def do_link(source, destination): + destination = re.sub(r"^~/", HOME + "/", destination) + print(f"Linking {source} -> {destination}") + try: + os.link(source, destination) + except Exception as e: + raise StepFailedError("Link raised exeption: " + str(e)) from e |
