aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gkeys-gen/gkeygen/cli.py')
-rw-r--r--gkeys-gen/gkeygen/cli.py110
1 files changed, 27 insertions, 83 deletions
diff --git a/gkeys-gen/gkeygen/cli.py b/gkeys-gen/gkeygen/cli.py
index e05ea1e..818dbbd 100644
--- a/gkeys-gen/gkeygen/cli.py
+++ b/gkeys-gen/gkeygen/cli.py
@@ -4,14 +4,17 @@
from __future__ import print_function
-import sys
import argparse
+import os
+import sys
from gkeys.config import GKeysConfig
from gkeys.log import log_levels, set_logger
-from gkeygen.actions import Actions, Available_Actions
+from gkeys.base import CliBase
+from gkeygen.actions import Actions, Available_Actions, Action_Options, Action_Map
-class Main(object):
+
+class Main(CliBase):
'''Main command line interface class'''
@@ -22,10 +25,19 @@ class Main(object):
@param config: optional GKeysConfig instance, For API use
@param print_results: optional boolean, for API use
"""
+ CliBase.__init__(self)
self.root = root or "/"
self.config = config or GKeysConfig(root=root)
- self.print_results = print_results
- self.args = None
+ self.config.options['print_results'] = print_results
+ self.cli_config = {
+ 'Actions': Actions,
+ 'Available_Actions': Available_Actions,
+ 'Action_Options': Action_Options,
+ 'Action_Map': Action_Map,
+ 'prog': 'gkeys-gen',
+ 'description': 'Gentoo Keys GPG key generator program',
+ 'epilog': '''CAUTION: adding UNTRUSTED keys can be HAZARDOUS to your system!'''
+ }
def __call__(self, args=None):
@@ -35,82 +47,14 @@ class Main(object):
Defaults to sys.argv[1:]
"""
if args:
- self.run(self.parse_args(args))
+ ok = self.setup(args, configs)
+ if ok:
+ 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-gen',
- description='Gentoo Keys GPG key generator program',
- epilog='''Caution: adding untrusted keys to these keyrings can
- be hazardous to your system!''')
- # actions
- parser.add_argument('action', choices=actions, nargs='?',
- default='genkey', help='Generate GPG key based on GLEP 63')
- # options
- parser.add_argument('-c', '--config', dest='config', default=None,
- help='The path to an alternate config file')
- parser.add_argument('-D', '--debug', default='DEBUG',
- choices=list(log_levels),
- help='The logging level to set for the logfile')
- parser.add_argument('-H', '--homedir', dest='homedir', default=None,
- help='The destination for the generated key')
- 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')
- 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-gen', 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
-
- 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
+ args = self.parse_args(sys.argv[1:])
+ configs = [os.path.join(self.config['configdir'],'gkeys.conf'),
+ os.path.join(self.config['configdir'],'gkeys-gen.conf')]
+ ok = self.setup(args, configs)
+ if ok:
+ return self.run(args)
+ return False