From ea78b2e4fcdefd13e35cb1eb28559f18a9cc6f1c Mon Sep 17 00:00:00 2001 From: termie Date: Thu, 19 Jan 2012 15:54:14 -0800 Subject: 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 --- keystone/config.py | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'keystone') 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') -- cgit