commit:     3b4c4ab5b926e92ce463123806d247ce16bb599c
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 11 17:46:40 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Dec 20 16:46:05 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3b4c4ab5

gkeyldap: Migrate to use the new gkeys CliBase class

Add options from gkey-ldap.

---
 gkeyldap/actions.py |  10 +++++-
 gkeyldap/cli.py     | 102 +++++++---------------------------------------------
 gkeys/base.py       |  10 ++++++
 3 files changed, 32 insertions(+), 90 deletions(-)

diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index 3333c37..cea4648 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -20,6 +20,11 @@ from gkeys.fileops import updatefiles
 
 Available_Actions = ['ldapsearch', 'updateseeds']
 
+Action_Options = {
+    'ldapsearch': ['fingerprint', 'mail', 'name', 'nick', 'seedfile', 
'status'],
+    'updateseeds': ['fingerprint', 'mail', 'name', 'nick', 'seedfile', 
'status'],
+}
+
 
 def get_key_ids(key_len, keyids):
     '''Small utility function to return only keyid (short)
@@ -80,7 +85,10 @@ class Actions(object):
         info = l.result2dict(results, 'uid')
         self.logger.debug(
             "MAIN: _action_updateseeds; got results :) converted to info")
-        filename = self.config['dev-seedfile'] + '.new'
+        if args.seedfile:
+            filename = self.config.get('seeds', args.seedfile) + '.new'
+        elif args.file:
+            filename = arg.file
         if not self.create_seedfile(info, filename):
             self.logger.error("Developer seed file update failure: "
                 "Original seed file is intact & untouched.")

diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 1fd4a7f..15f4dbd 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -5,19 +5,17 @@ from __future__ import print_function
 
 
 import sys
-import argparse
-
-from gkeys.log import log_levels, set_logger
 
 from gkeys import config
 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
 
 
-class Main(object):
+class Main(CliBase):
     '''Main command line interface class'''
 
 
@@ -33,6 +31,15 @@ class Main(object):
         self.print_results = print_results
         self.args = None
         self.seeds = None
+        self.cli_config = {
+            'Actions': Actions,
+            'Available_Actions': Available_Actions,
+            'Action_Options': Action_Options,
+            'prog': 'gkey-ldap',
+            'description': 'Gentoo-keys LDAP interface and seed file generator 
program',
+            'epilog': '''Caution: adding untrusted keys to these keyrings can
+                be hazardous to your system!'''
+        }
 
 
     def __call__(self, args=None):
@@ -42,90 +49,7 @@ class Main(object):
                      Defaults to sys.argv[1:]
         """
         if args:
-            self.run(self.parse_args(args))
+            return self.run(self.parse_args(args))
         else:
-            self.run(self.parse_args(sys.argv[1:]))
-
-
-    def parse_args(self, args):
-        '''Parse a list of aruments
-
-        @param args: list
-        @returns argparse.Namespace object
-        '''
-        #logger.debug('MAIN: parse_args; args: %s' % args)
-        actions = Available_Actions
-        parser = argparse.ArgumentParser(
-            prog='gkeys-ldap',
-            description='Gentoo Keys LDAP manager program',
-            epilog='''Caution: adding untrusted keys to these keyrings can
-                be hazardous to your system!''')
-        # actions
-        parser.add_argument('action', choices=actions, nargs='?',
-            default='ldapsearch', help='Search in LDAP or update the seed 
file')
-        # options
-        parser.add_argument('-c', '--config', dest='config', default=None,
-            help='The path to an alternate config file')
-        parser.add_argument('-d', '--dest', dest='destination', default=None,
-            help='The destination db file path')
-        parser.add_argument('-D', '--debug', default='DEBUG',
-            choices=list(log_levels),
-            help='The logging level to set for the logfile')
-        parser.add_argument('-f', '--fingerprint', dest='fingerprint', 
default=None,
-            help='The gpg fingerprint to search for')
-        parser.add_argument('-m', '--mail', dest='mail', default=None,
-            help='The email address to search for')
-        parser.add_argument('-n', '--nick', dest='nick', default=None,
-            help='The nick or user id (uid) to search for')
-        parser.add_argument('-N', '--name', dest='name', default=None,
-            help='The name to search for')
-        parser.add_argument('-S', '--status', default=False,
-            help='The seedfile path to use')
-        return parser.parse_args(args)
-
-
-    def run(self, args):
-        '''Run the args passed in
-
-        @param args: list or argparse.Namespace object
-        '''
-        global logger
-        message = None
-        if not args:
-            message = "Main: run; invalid args argument passed in"
-        if isinstance(args, list):
-            args = self.parse_args(args)
-        if args.config:
-            self.config.defaults['config'] = args.config
-        # now make it load the config file
-        self.config.read_config()
-
-        # establish our logger and update it in the imported files
-        logger = set_logger('gkeys-ldap', self.config['logdir'], args.debug,
-            dirmode=int(self.config.get_key('permissions', 'directories'),0),
-            filemask=int(self.config.get_key('permissions', 'files'),0))
-        config.logger = logger
-        seed.logger = logger
-        connect.logger = logger
-        search.logger = logger
-
-        if message:
-            logger.error(message)
-
-        # now that we have a logger, record the alternate config setting
-        if args.config:
-            logger.debug("Main: run; Found alternate config request: %s"
-                % args.config)
-
-        # establish our actions instance
-        self.actions = Actions(self.config, print, logger)
-
-        logger.info("Begin running action: %s" % args.action)
-
-        # run the action
-        func = getattr(self.actions, '%s' % args.action)
-
-        logger.debug('Main: run; Found action: %s' % args.action)
-        results = func(args)
-        return results
+            return self.run(self.parse_args(sys.argv[1:]))
 

diff --git a/gkeys/base.py b/gkeys/base.py
index 48de147..d3f8227 100644
--- a/gkeys/base.py
+++ b/gkeys/base.py
@@ -123,6 +123,16 @@ class CliBase(object):
             default=False,
             help='Turn on timestamp use')
 
+    @staticmethod
+    def _option_mail(parser=None):
+        parser.add_argument('-m', '--mail', dest='mail', default=None,
+            help='The email address to search for')
+
+    @staticmethod
+    def _option_status(parser=None):
+        parser.add_argument('-A', '--status', default=False,
+            help='The active status of the member')
+
 
     def parse_args(self, args):
         '''Parse a list of aruments

Reply via email to