diff --git a/src/facter.py b/src/facter.py index 4c1c14d6b4e5d9bb832c8e08dd7650607d2b069a..5141b784ddf94e9166c1250b95299540503ecf5b 100644 --- a/src/facter.py +++ b/src/facter.py @@ -23,10 +23,10 @@ import json import multiprocessing import os import platform -import subprocess +from subprocess import CalledProcessError import src.globalvars as gv -from src.util import print_error, print_info, run_cmd +from src.util import print_debug, print_info, print_warn, run_cmd FACTS = {} @@ -73,12 +73,13 @@ def load_facts(path=None): filename = "facts" else: if os.path.isdir(path): - filename = os.path.join(path, self.name) + filename = os.path.join(path, "facts") else: filename = os.path.splitext(path)[0] if os.path.exists(filename + ".json"): filename += ".json" + global FACTS with open(filename, "r") as f: FACTS = json.load(f) elif os.path.exists(filename + ".save"): @@ -167,12 +168,11 @@ def libc_ver(executable=None): def exe_version(executable, version_flag="--version"): """Return version of executable""" - proc = subprocess.run([executable, version_flag], - universal_newlines=True, - stdout=subprocess.PIPE) - - if proc.returncode != 0: - print_warning(f"failed to get version of {executable}") + try: + proc = run_cmd([executable, version_flag], capture=True) + except CalledProcessError as e: + print_warn(f"failed to get version of {executable}") + print_debug(e.stderr) return "" return proc.stdout[:-1]