From 8e62bc3d97a5706eb4701a2d78139f7eea6009ac Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Sat, 7 Nov 2020 16:23:36 +0100 Subject: [PATCH] check python dependencies --- dotdrop/dotdrop.py | 14 +++++++------- dotdrop/utils.py | 25 ++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/dotdrop/dotdrop.py b/dotdrop/dotdrop.py index cdad037..be7b496 100644 --- a/dotdrop/dotdrop.py +++ b/dotdrop/dotdrop.py @@ -690,6 +690,13 @@ def apply_trans(dotpath, dotfile, templater, debug=False): def main(): """entry point""" + # check dependencies are met + try: + dependencies_met() + except Exception as e: + LOG.err(e) + return False + try: o = Options() except YamlException as e: @@ -702,13 +709,6 @@ def main(): if o.debug: LOG.dbg('\n\n') - # check dependencies are met - try: - dependencies_met() - except Exception as e: - LOG.err(e) - return False - ret = True try: diff --git a/dotdrop/utils.py b/dotdrop/utils.py index 290aafa..8447d5e 100644 --- a/dotdrop/utils.py +++ b/dotdrop/utils.py @@ -268,11 +268,34 @@ def get_module_from_path(path): def dependencies_met(): """make sure all dependencies are met""" - deps = ['file', 'diff', 'mkdir'] + # check unix tools deps + deps = ['file', 'diff'] err = 'The tool \"{}\" was not found in the PATH!' for dep in deps: if not which(dep): raise Exception(err.format(dep)) + # check python deps + err = 'missing python module {}' + try: + import magic + assert(magic) + except ImportError: + raise Exception(err.format('python-magic')) + try: + from docopt import docopt + assert(docopt) + except ImportError: + raise Exception(err.format('docopt')) + try: + import jinja2 + assert(jinja2) + except ImportError: + raise Exception(err.format('jinja2')) + try: + from ruamel.yaml import YAML + assert(YAML) + except ImportError: + raise Exception(err.format('ruamel.yaml')) def mirror_file_rights(src, dst):