aboutsummaryrefslogtreecommitdiffstats
path: root/util/runners.py
blob: 9252d86053132e6b1f0c97803581858f2b165468 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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