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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#!/usr/bin/python3
import os
from util.runners import run_step
from util.exceptions import StepFailedError
from util.helpers import check_preconditions
from util.prompt import query_yes_no
import yaml
from termcolor import colored
CWD = os.getcwd()
OVERWRITE_FILES = os.getenv("OVERWRITE_FILES")
def get_sections_meeting_preconditions(yaml):
sections = {}
for key, section in yaml["sections"].items():
if not check_preconditions(section):
continue
sections[key] = section
return sections
def run_section(title, section):
os.chdir(CWD)
if "directory" in section:
os.chdir(section["directory"])
elif os.path.exists(title):
os.chdir(title)
for step in section["steps"]:
if not check_preconditions(step):
continue
run_step(step)
with open("info.yml", "r") as f:
yaml = yaml.safe_load(f)
sections = get_sections_meeting_preconditions(yaml)
print("Sections to run: " + ", ".join(
map(lambda x: colored(x, "green"), sections.keys())
))
print()
if OVERWRITE_FILES == "1":
print(colored("Warning: ", "red") + "you have requested overwrite mode!")
print()
if not query_yes_no("Proceed with install?", False):
exit(1)
section_count = 0
total = len(sections.keys())
notes = {}
for key, section in sections.items():
section_count += 1
print(colored(f"[{section_count}/{total}] ", "white", attrs=["bold"])
+ "Section "
+ colored(key, "green"))
try:
run_section(key, section)
if "notes" in section:
notes[key] = section["notes"]
except StepFailedError as e:
print(colored("Step failed: ", "red") + str(e))
print()
if len(notes) > 0:
print(colored(f"[Notes]", "white", attrs=["bold"]))
print()
for key, note in notes.items():
print("From " + colored(key, "green") + ":")
for message in note:
print(f"- {message}")
print()
|