commit: 3fb60f5c114d9784bdc3609cdf20bd7062cf3044 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Fri Dec 26 18:36:04 2014 +0000 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> CommitDate: Fri Dec 26 18:36:04 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3fb60f5c
Map sub commands to class functions This allows the use of hypens in subcommands because they are no longer directly mapped to the class function they initiate. Do some more fine tuning of the grouping identifiers. --- gkeys-ldap/gkeyldap/actions.py | 5 +++ gkeys-ldap/gkeyldap/cli.py | 4 ++- gkeys/gkeys/actions.py | 74 ++++++++++++++++++++++++++++-------------- gkeys/gkeys/base.py | 13 +++++--- gkeys/gkeys/cli.py | 3 +- 5 files changed, 67 insertions(+), 32 deletions(-) diff --git a/gkeys-ldap/gkeyldap/actions.py b/gkeys-ldap/gkeyldap/actions.py index 1d8e848..b543685 100644 --- a/gkeys-ldap/gkeyldap/actions.py +++ b/gkeys-ldap/gkeyldap/actions.py @@ -25,6 +25,11 @@ Action_Options = { 'updateseeds': ['fingerprint', 'mail', 'name', 'nick', 'category', 'status'], } +Action_Map = { + 'ldap-search': 'ldapsearch', + 'update-seeds': 'updateseeds', +} + def get_key_ids(key_len, keyids): '''Small utility function to return only keyid (short) diff --git a/gkeys-ldap/gkeyldap/cli.py b/gkeys-ldap/gkeyldap/cli.py index bb4f5c3..c85176f 100644 --- a/gkeys-ldap/gkeyldap/cli.py +++ b/gkeys-ldap/gkeyldap/cli.py @@ -12,7 +12,8 @@ from gkeys import seed from gkeys.base import CliBase from gkeys.config import GKeysConfig from gkeyldap import connect, search -from gkeyldap.actions import Actions, Available_Actions, Action_Options +from gkeyldap.actions import (Actions, Available_Actions, Action_Options, + Action_Map) class Main(CliBase): @@ -35,6 +36,7 @@ class Main(CliBase): 'Actions': Actions, 'Available_Actions': Available_Actions, 'Action_Options': Action_Options, + 'Action_Map': Action_Map, 'prog': 'gkey-ldap', 'description': 'Gentoo-keys LDAP interface and seed file generator program', 'epilog': '''CAUTION: adding UNTRUSTED keys can be HAZARDOUS to your system!''' diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py index ea42b6d..ded3df7 100644 --- a/gkeys/gkeys/actions.py +++ b/gkeys/gkeys/actions.py @@ -31,40 +31,64 @@ from gkeys.config import GKEY from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn -Seed_Actions = ['SEED_COMMANDS', 'addseed', 'fetchseed', 'listcats', 'listseed', 'listseedfiles', - 'moveseed', 'removeseed'] +Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed', 'list-cats', + 'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed'] -Key_Actions = ['KEY_COMMANDS', 'checkkey', 'importkey', 'installed', 'installkey', 'listkey', - 'movekey', 'refreshkey', 'removekey'] +Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed', + 'install-key', 'list-key', 'move-key', 'refresh-key', 'remove-key', + 'spec-check'] -General_Actions = ['GENERAL_COMMANDS', 'sign','verify'] +General_Actions = ['---general---', 'sign','verify'] -Available_Actions = Seed_Actions + Key_Actions + General_Actions +Available_Actions = General_Actions + Key_Actions + Seed_Actions Action_Options = { - 'listcats': [], - 'listseed': ['nick', 'name', 'keydir', 'fingerprint', 'category', '1file'], - 'addseed': ['nick', 'name', 'keydir', 'fingerprint', 'category'], - 'removeseed': ['nick', 'name', 'keydir', 'fingerprint', 'category'], - 'moveseed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'dest'], - 'fetchseed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], - 'listseedfiles': [], - 'listkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'], - 'installkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', '1file'], - 'removekey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], - 'movekey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'dest'], + 'list-cats': [], + 'list-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', '1file'], + 'add-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category'], + 'remove-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category'], + 'move-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'dest'], + 'fetch-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], + 'list-seedfiles': [], + 'list-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'], + 'install-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', '1file'], + 'remove-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], + 'move-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'dest'], 'installed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], - 'importkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], + 'import-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'], 'verify': ['dest', 'nick', 'name', 'keydir', 'fingerprint', 'category', '1file', 'signature', 'timestamp'], - 'checkkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], + 'check-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], 'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'], - 'speccheck': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], - 'refreshkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], - 'GENERAL_COMMANDS': [], - 'SEED_COMMANDS': [], - 'KEY_COMMANDS': [], + 'spec-check': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], + 'refresh-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'], + '---general---': [], + '----seeds----': [], + '----keys-----': [], } +Action_Map = { + 'list-cats': 'listcats', + 'list-seed': 'listseed', + 'add-seed': 'addseed', + 'remove-seed': 'removeseed', + 'move-seed': 'moveseed', + 'fetch-seed': 'fetchseed', + 'list-seedfiles': 'listseedfiles', + 'list-key': 'listkey', + 'install-key': 'installkey', + 'remove-key': 'removekey', + 'move-key': 'movekey', + 'installed': 'installed', + 'import-key': 'importkey', + 'verify': 'verify', + 'check-key': 'checkkey', + 'sign': 'sign', + 'spec-check': 'speccheck', + 'refresh-key': 'refreshkey', + '---general---': 'GENERAL_COMMANDS', + '----seeds----': 'SEED_COMMANDS', + '----keys-----': 'KEY_COMMANDS', +} class Actions(object): '''Primary API actions''' @@ -103,7 +127,7 @@ class Actions(object): try: self.seeds = handler.load_seeds(args.category, args.nick) except ValueError: - return (False, ["Failed to load seed file. Consider fetching seedfiles."]) + return (False, ['', "Failed to load seed file. Consider fetching seedfiles."]) if self.seeds: results = self.seeds.list(**kwargs) else: diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py index 201f31c..56262df 100644 --- a/gkeys/gkeys/base.py +++ b/gkeys/gkeys/base.py @@ -31,9 +31,10 @@ class CliBase(object): def __init__(self): self.cli_config = { - 'Actions': [], + 'Actions': None, 'Available_Actions': [], - 'Action_Options': [], + 'Action_Options': {}, + 'Action_Map': {}, 'prog': 'gkeys', 'description': 'Gentoo-keys manager program', 'epilog': '''Caution: adding UNTRUSTED keys can be HAZARDOUS to your system!''' @@ -175,7 +176,8 @@ class CliBase(object): description='Valid subcommands', help='Additional help') for name in self.cli_config['Available_Actions']: - action_method = getattr(self.cli_config['Actions'], name) + action_method = getattr(self.cli_config['Actions'], + self.cli_config['Action_Map'][name]) actiondoc = action_method.__doc__ try: text = actiondoc.splitlines()[0] @@ -194,7 +196,7 @@ class CliBase(object): if not action: parser.print_usage() sys.exit(1) - elif action in ['GENERAL_COMMANDS', 'KEY_COMMANDS', 'SEED_COMMANDS']: + elif action in ['---general---', '----keys-----', '----seeds----']: parser.print_help() sys.exit(1) return parsed_args @@ -250,7 +252,8 @@ class CliBase(object): self.actions = self.cli_config['Actions'](self.config, self.output_results, logger) # run the action - func = getattr(self.actions, '%s' % args.action) + func = getattr(self.actions, '%s' + % self.cli_config['Action_Map'][args.action]) logger.debug('Main: run; Found action: %s' % args.action) success, results = func(args) if not results: diff --git a/gkeys/gkeys/cli.py b/gkeys/gkeys/cli.py index c8ce6bc..df81882 100644 --- a/gkeys/gkeys/cli.py +++ b/gkeys/gkeys/cli.py @@ -16,7 +16,7 @@ from __future__ import print_function import sys from gkeys.base import CliBase -from gkeys.actions import Actions, Available_Actions, Action_Options +from gkeys.actions import Actions, Available_Actions, Action_Options, Action_Map from gkeys.config import GKeysConfig @@ -38,6 +38,7 @@ class Main(CliBase): 'Actions': Actions, 'Available_Actions': Available_Actions, 'Action_Options': Action_Options, + 'Action_Map': Action_Map, 'prog': 'gkeys', 'description': 'Gentoo-keys manager program', 'epilog': '''CAUTION: adding UNTRUSTED keys can be HAZARDOUS to your system!'''