mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
ci: helper: Add a required_deps higher order helper/decorator
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@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
a35b4e4e97
commit
05d65767cf
22
ci/helper
22
ci/helper
@ -14,6 +14,28 @@ import textwrap
|
|||||||
import util
|
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:
|
class Parser:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# Options that are common to all actions that use containers
|
# Options that are common to all actions that use containers
|
||||||
|
Loading…
Reference in New Issue
Block a user