[libvirt PATCH v2 26/35] ci: helper: Add a required_deps higher order helper/decorator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since we'll depend on GitPython for repo cloning, we need to make sure
to emit a user friendly error if the module is not installed. This
patch introduces a helper which future patches will use as a decorator.
Inspiration for this helper has been taken out of lcitool where we use
an identical helper for this purpose.

Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx>
Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
Erik Skultety <eskultet@xxxxxxxxxx>:
---
 ci/helper | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/ci/helper b/ci/helper
index 75552774f6..4727145b28 100755
--- a/ci/helper
+++ b/ci/helper
@@ -14,6 +14,28 @@ import textwrap
 import util
 
 
+def required_deps(*deps):
+    module2pkg = {
+        "git": "GitPython"
+    }
+
+    def inner_decorator(func):
+        def wrapped(*args, **kwargs):
+            cmd = func.__name__[len('_action_'):]
+            for dep in deps:
+                try:
+                    import importlib
+                    importlib.import_module(dep)
+                except ImportError:
+                    pkg = module2pkg[dep]
+                    msg = f"'{pkg}' not found (required by the '{cmd}' command)"
+                    print(msg, file=sys.stderr)
+                    sys.exit(1)
+            func(*args, **kwargs)
+        return wrapped
+    return inner_decorator
+
+
 class Parser:
     def __init__(self):
         # Options that are common to all actions that use containers
-- 
2.41.0




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux