From e43dadd4fe31a1709e7d2d2b41ed05fe40eb6357 Mon Sep 17 00:00:00 2001 From: ldericher Date: Mon, 10 Aug 2020 14:50:47 +0200 Subject: [PATCH] "executables:*" key handling in _util --- src/kiwi/subcommands/_utils.py | 32 ++++++++++++++++++++++++---- src/kiwi/subcommands/init.py | 38 ++++++++++------------------------ 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/kiwi/subcommands/_utils.py b/src/kiwi/subcommands/_utils.py index 2501b52..adf5b45 100644 --- a/src/kiwi/subcommands/_utils.py +++ b/src/kiwi/subcommands/_utils.py @@ -1,7 +1,31 @@ +import os import subprocess from ..config import LoadedConfig +########### +# CONSTANTS + + +def is_executable(filename): + if filename is None: + return False + + return os.path.isfile(filename) and os.access(filename, os.X_OK) + + +def find_exe_file(exe_name): + for path in os.environ['PATH'].split(os.pathsep): + exe_file = os.path.join(path, exe_name) + if is_executable(exe_file): + return exe_file + + return None + + +def get_exe_key(exe_name): + return f'executables:{exe_name}' + class SubCommand: command = None @@ -24,7 +48,7 @@ class Docker: try: config = LoadedConfig.get() subprocess.run( - [config['executables:docker'], 'ps'], + [config[get_exe_key('docker')], 'ps'], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL ) @@ -35,12 +59,12 @@ class Docker: return cls.__requires_root @classmethod - def run_command(cls, program, args, cwd=None, env=None): + def run_command(cls, exe_key, args, cwd=None, env=None): config = LoadedConfig.get() - cmd = [config['executables:' + program], *args] + cmd = [config[get_exe_key(exe_key)], *args] if cls.__check_requires_root(): - cmd = [config['executables:sudo'], *cmd] + cmd = [config[get_exe_key('sudo')], *cmd] print(cmd) return subprocess.run( diff --git a/src/kiwi/subcommands/init.py b/src/kiwi/subcommands/init.py index b377545..f95408e 100644 --- a/src/kiwi/subcommands/init.py +++ b/src/kiwi/subcommands/init.py @@ -4,7 +4,7 @@ import os from ..core import KIWI_CONF_NAME, Parser from ..config import DefaultConfig, LoadedConfig -from ._utils import SubCommand +from ._utils import SubCommand, is_executable, find_exe_file, get_exe_key def user_input(config, key, prompt): @@ -16,35 +16,19 @@ def user_input(config, key, prompt): config[key] = result -def is_executable(filename): - if filename is None: - return False - - return os.path.isfile(filename) and os.access(filename, os.X_OK) - - -def find_exe(program_name): - for path in os.environ["PATH"].split(os.pathsep): - exe_file = os.path.join(path, program_name) - if is_executable(exe_file): - return exe_file - - return None - - -def user_input_exe(config, key): +def user_input_exe(config, exe_name): + key = get_exe_key(exe_name) exe_file = config[key] - program_name = key.split(':')[1] if not is_executable(exe_file): - logging.info("Reconfiguring '%s' executable path.", program_name) - exe_file = find_exe(program_name) + logging.info(f"Reconfiguring '{exe_name}' executable path.") + exe_file = find_exe_file(exe_name) if exe_file is not None: - logging.debug("Found executable at '%s'.", exe_file) + logging.debug(f"Found executable at '{exe_file}'.") config[key] = exe_file else: - user_input(config, key, f"Enter path to '{program_name}' executable") + user_input(config, key, f"Enter path to '{exe_name}' executable") class InitCommand(SubCommand): @@ -68,7 +52,7 @@ class InitCommand(SubCommand): logging.info(f"Initializing kiwi-config instance in '{os.getcwd()}'") if Parser.get_args().force and os.path.isfile(KIWI_CONF_NAME): - logging.warning("Overwriting existing '%s'!", KIWI_CONF_NAME) + logging.warning(f"Overwriting existing '{KIWI_CONF_NAME}'!") config = DefaultConfig.get() else: config = LoadedConfig.get() @@ -88,8 +72,8 @@ class InitCommand(SubCommand): user_input(config, 'network:cidr', "Enter CIDR block for local docker network") # executables - user_input_exe(config, 'executables:docker') - user_input_exe(config, 'executables:docker-compose') - user_input_exe(config, 'executables:sudo') + user_input_exe(config, 'docker') + user_input_exe(config, 'docker-compose') + user_input_exe(config, 'sudo') config.save()