large refactor (break up ConfigManager), add more tests

This commit is contained in:
2024-08-10 23:48:35 -07:00
parent cb1dd52833
commit bf311d57a5
26 changed files with 1066 additions and 611 deletions

61
symconf/runner.py Normal file
View File

@@ -0,0 +1,61 @@
import stat
import subprocess
from pathlib import Path
from colorama import Fore, Back, Style
from symconf.util import printc, color_text
class Runner:
def run_script(
self,
script: str | Path,
):
script_path = Path(script)
if script_path.stat().st_mode & stat.S_IXUSR == 0:
print(
color_text("", Fore.BLUE),
color_text(
f' > script "{script_path.name}" missing execute permissions, skipping',
Fore.RED + Style.DIM
)
)
return
print(
color_text("", Fore.BLUE),
color_text(
f' > running script "{script_path.name}"',
Fore.BLUE
)
)
output = subprocess.check_output(str(script_path), shell=True)
if output:
fmt_output = output.decode().strip().replace(
'\n',
f'\n{Fore.BLUE}{Style.NORMAL}{Style.DIM} '
)
print(
color_text("", Fore.BLUE),
color_text(
f' captured script output "{fmt_output}"',
Fore.BLUE + Style.DIM
)
)
return output
def run_many(
self,
script_list: list[str | Path],
):
outputs = []
for script in script_list:
output = self.run_script(script)
outputs.append(output)
return outputs