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!'''