diff options
| author | termie <github@anarkystic.com> | 2012-01-19 15:54:14 -0800 |
|---|---|---|
| committer | termie <github@anarkystic.com> | 2012-01-19 20:10:17 -0800 |
| commit | ea78b2e4fcdefd13e35cb1eb28559f18a9cc6f1c (patch) | |
| tree | 9e0b8e91147de7863cd6c17022456e3fd80bb917 /keystone | |
| parent | d8b499bd6dc1fe87c824b9a03dcbb6f5bd574b12 (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.py | 45 |
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') |
