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

Reply via email to