mirror of https://gitee.com/openkylin/libvirt.git
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
|
||||
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue