diff options
author | 2014-12-26 10:36:04 -0800 | |
---|---|---|
committer | 2014-12-26 10:36:04 -0800 | |
commit | 3fb60f5c114d9784bdc3609cdf20bd7062cf3044 (patch) | |
tree | 6b00f441f2b22c302b8f8d7aba9f28110af0a8b8 /gkeys | |
parent | gkeys/base.py: Add a justdoit option, fix boolean options (diff) | |
download | gentoo-keys-3fb60f5c114d9784bdc3609cdf20bd7062cf3044.tar.gz gentoo-keys-3fb60f5c114d9784bdc3609cdf20bd7062cf3044.tar.bz2 gentoo-keys-3fb60f5c114d9784bdc3609cdf20bd7062cf3044.zip |
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.
Diffstat (limited to 'gkeys')
-rw-r--r-- | gkeys/gkeys/actions.py | 74 | ||||
-rw-r--r-- | gkeys/gkeys/base.py | 13 | ||||
-rw-r--r-- | gkeys/gkeys/cli.py | 3 |
3 files changed, 59 insertions, 31 deletions
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!''' |