From ac15ad74b5b30e1ac70e5b2b587d6bea6a7fec5d Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 15 Dec 2022 10:35:29 +0200 Subject: feat: check that files referred to by spec file exist, at start This will find problems earlier. Sponsored-by: author --- v-i | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'v-i') diff --git a/v-i b/v-i index d4f9efd..0b25fec 100755 --- a/v-i +++ b/v-i @@ -20,6 +20,12 @@ def log(msg): logging.info(msg) +def error(msg): + if verbose: + print("INSTALLER ERROR:", msg) + logging.error(msg) + + def run(argv, **kwargs): log(f"RUN: {argv} {kwargs}") return subprocess.run(argv, **kwargs) @@ -415,9 +421,23 @@ class SystemSpec: setattr(self, key, self._obj[key]) del self._obj + self._check() + def __repr__(self): - r = {key: getattr(self, key) for key in dir(self) if not key.startswith("_")} - return repr(r) + return repr( + {key: getattr(self, key) for key in dir(self) if not key.startswith("_")} + ) + + def _check(self): + try: + for filename in self.extra_playbooks + self.ansible_vars_files: + if not os.path.exists(filename): + raise Exception( + f"spec refers to file {filename} which does not exist" + ) + except Exception as e: + error(e) + sys.exit("problem with spec file") def main(): @@ -443,6 +463,9 @@ def main(): system = SystemSpec(args.spec) log(f"spec: {system!r}") + print("OK") + return + ansible_vars = dict(system.ansible_vars) ansible_vars["hostname"] = system.hostname for filename in system.ansible_vars_files: -- cgit v1.2.1