aboutsummaryrefslogtreecommitdiff
path: root/gkeys
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-12-26 10:36:04 -0800
committerBrian Dolbec <dolsen@gentoo.org>2014-12-26 10:36:04 -0800
commit3fb60f5c114d9784bdc3609cdf20bd7062cf3044 (patch)
tree6b00f441f2b22c302b8f8d7aba9f28110af0a8b8 /gkeys
parentgkeys/base.py: Add a justdoit option, fix boolean options (diff)
downloadgentoo-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.py74
-rw-r--r--gkeys/gkeys/base.py13
-rw-r--r--gkeys/gkeys/cli.py3
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!'''