mirror of
https://github.com/ceph/ceph
synced 2024-12-25 12:54:16 +00:00
622ce1115d
(cherry picked from commit 083717c1b4022289806030faf23ff7c4aa371f19)
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
def gen_args(name, args):
|
|
usage = [""]
|
|
usage += [name + ':']
|
|
usage += \
|
|
[" {key}: <{usage}> ({default})".format(
|
|
key=key, usage=_usage, default=default)
|
|
for (key, _usage, default, _) in args]
|
|
usage.append('')
|
|
usage.append(name + ':')
|
|
usage += \
|
|
[" {key}: {default}".format(
|
|
key = key, default = default)
|
|
for (key, _, default, _) in args]
|
|
usage = '\n'.join(' ' + i for i in usage)
|
|
def ret(config):
|
|
class Object(object): pass
|
|
obj = Object()
|
|
for (key, usage, default, conv) in args:
|
|
if key in config:
|
|
setattr(obj, key, conv(config[key]))
|
|
else:
|
|
setattr(obj, key, conv(default))
|
|
return obj
|
|
return usage, ret
|
|
|
|
def argify(name, args):
|
|
(usage, config_func) = gen_args(name, args)
|
|
def ret1(f):
|
|
def ret2(**kwargs):
|
|
config = kwargs.get('config', {})
|
|
if config is None:
|
|
config = {}
|
|
kwargs['config'] = config_func(config)
|
|
return f(**kwargs)
|
|
ret2.__doc__ = f.__doc__ + usage
|
|
return ret2
|
|
return ret1
|