diff options
Diffstat (limited to 'v-i')
-rwxr-xr-x | v-i | 43 |
1 files changed, 34 insertions, 9 deletions
@@ -2,6 +2,7 @@ import argparse import glob +import json import logging import os import shutil @@ -32,8 +33,27 @@ def error(msg): def run(argv, **kwargs): - log(f"RUN: {argv} {kwargs}") - return subprocess.run(argv, **kwargs) + log(f"RUN: {argv[0]}") + for arg in argv: + log(f"RUN: - {arg!r}") + for key in kwargs: + log(f"RUN: - {key}={kwargs[key]!r}") + check = False + if kwargs.get("check"): + check = True + del kwargs["check"] + if "capture_output" not in kwargs: + kwargs["capture_output"] = True + p = subprocess.run(argv, **kwargs) + if check and p.returncode != 0: + stdout = indent(p.stdout.decode()) + stderr = indent(p.stderr.decode()) + error(f"Ran command that failed: {argv}") + error(f"Exit code {p.returncode}") + error(f"Stdout:\n{stdout}") + error(f"Stderr:\n{stderr}") + sys.exit("command failed") + return p def physical_volumes(): @@ -427,7 +447,7 @@ class SystemSpec: "ansible_vars": {}, "ansible_vars_files": [], "luks": "", - "debian_release": "bullseye", + "debian_release": "stable", "root_fstype": "ext4", } with open(filename) as f: @@ -455,14 +475,17 @@ class SystemSpec: for key in self._obj: setattr(self, key, self._obj[key]) - del self._obj self._check() def __repr__(self): - return repr( - {key: getattr(self, key) for key in dir(self) if not key.startswith("_")} - ) + return repr(self.as_dict()) + + def as_dict(self): + return {key: self._obj[key] for key in self._obj} + + def as_json(self): + return json.dumps(self.as_dict(), indent=4) def _check(self): try: @@ -514,7 +537,8 @@ def main(): log("v-i starts") system = SystemSpec(args.spec) - log(f"spec: {system!r}") + spec_json = system.as_json() + log(f"formatted spec:\n{spec_json}") cache = args.cache or cache_name(system) log(f"cache: {cache}") @@ -526,7 +550,8 @@ def main(): with open(filename) as f: vars_dict = yaml.safe_load(f) ansible_vars.update(vars_dict) - log(f"ansible_vars: {ansible_vars!r}") + ansible_vars_json = json.dumps(ansible_vars, indent=4) + log(f"ansible_vars:\n{ansible_vars_json}") timings.reached("read configuration") clean_up_disks([system.drive] + system.extra_drives) |