summaryrefslogtreecommitdiffstats
path: root/keystone
diff options
context:
space:
mode:
authortermie <github@anarkystic.com>2012-01-19 15:54:14 -0800
committertermie <github@anarkystic.com>2012-01-19 20:10:17 -0800
commitea78b2e4fcdefd13e35cb1eb28559f18a9cc6f1c (patch)
tree9e0b8e91147de7863cd6c17022456e3fd80bb917 /keystone
parentd8b499bd6dc1fe87c824b9a03dcbb6f5bd574b12 (diff)
some cli improvements
prints available commands and config values when no arguments are given prints available subcommands when command is given but no subocmmand is
Diffstat (limited to 'keystone')
-rw-r--r--keystone/config.py45
1 files changed, 32 insertions, 13 deletions
diff --git a/keystone/config.py b/keystone/config.py
index a89c6e90..11db8b53 100644
--- a/keystone/config.py
+++ b/keystone/config.py
@@ -11,11 +11,11 @@ from keystone.common import cfg
gettext.install('keystone', unicode=1)
-class Config(cfg.CommonConfigOpts):
+class ConfigMixin(object):
def __call__(self, config_files=None, *args, **kw):
if config_files is not None:
self._opts['config_file']['opt'].default = config_files
- return super(Config, self).__call__(*args, **kw)
+ return super(ConfigMixin, self).__call__(*args, **kw)
def __getitem__(self, key, default=None):
return getattr(self, key, default)
@@ -27,6 +27,21 @@ class Config(cfg.CommonConfigOpts):
for k in self._opts:
yield (k, getattr(self, k))
+ def print_help(self):
+ self._oparser.print_help()
+
+ def set_usage(self, usage):
+ self.usage = usage
+ self._oparser.usage = usage
+
+
+class Config(ConfigMixin, cfg.ConfigOpts):
+ pass
+
+
+class CommonConfig(ConfigMixin, cfg.CommonConfigOpts):
+ pass
+
def setup_logging(conf):
"""
@@ -76,33 +91,37 @@ def setup_logging(conf):
def register_str(*args, **kw):
- group = _ensure_group(kw)
- return CONF.register_opt(cfg.StrOpt(*args, **kw), group=group)
+ conf = kw.pop('conf', CONF)
+ group = _ensure_group(kw, conf)
+ return conf.register_opt(cfg.StrOpt(*args, **kw), group=group)
def register_cli_str(*args, **kw):
- group = _ensure_group(kw)
- return CONF.register_cli_opt(cfg.StrOpt(*args, **kw), group=group)
+ conf = kw.pop('conf', CONF)
+ group = _ensure_group(kw, conf)
+ return conf.register_cli_opt(cfg.StrOpt(*args, **kw), group=group)
def register_bool(*args, **kw):
- group = _ensure_group(kw)
- return CONF.register_opt(cfg.BoolOpt(*args, **kw), group=group)
+ conf = kw.pop('conf', CONF)
+ group = _ensure_group(kw, conf)
+ return conf.register_opt(cfg.BoolOpt(*args, **kw), group=group)
def register_cli_bool(*args, **kw):
- group = _ensure_group(kw)
- return CONF.register_cli_opt(cfg.BoolOpt(*args, **kw), group=group)
+ conf = kw.pop('conf', CONF)
+ group = _ensure_group(kw, conf)
+ return conf.register_cli_opt(cfg.BoolOpt(*args, **kw), group=group)
-def _ensure_group(kw):
+def _ensure_group(kw, conf):
group = kw.pop('group', None)
if group:
- CONF.register_group(cfg.OptGroup(name=group))
+ conf.register_group(cfg.OptGroup(name=group))
return group
-CONF = Config(project='keystone')
+CONF = CommonConfig(project='keystone')
register_str('admin_token', default='ADMIN')