aboutsummaryrefslogtreecommitdiff
path: root/gkeys
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-12-30 11:38:23 -0800
committerBrian Dolbec <dolsen@gentoo.org>2014-12-31 18:39:51 -0800
commit3ea4ac8ff20626008d02a44c09211e2a67c54fcd (patch)
tree6945d549d392c7cdfd8b4210fdf05b6f1875546f /gkeys
parentgkeys: Remove the need to import gkeys seed.py and lib.py (diff)
downloadgentoo-keys-3ea4ac8ff20626008d02a44c09211e2a67c54fcd.tar.gz
gentoo-keys-3ea4ac8ff20626008d02a44c09211e2a67c54fcd.tar.bz2
gentoo-keys-3ea4ac8ff20626008d02a44c09211e2a67c54fcd.zip
gkeys/config.py: Make it possible to read more than one config file
Save homedir to the config class for re-use in gkeys-gen multiple configs fix
Diffstat (limited to 'gkeys')
-rw-r--r--gkeys/gkeys/base.py19
-rw-r--r--gkeys/gkeys/cli.py12
-rw-r--r--gkeys/gkeys/config.py25
3 files changed, 36 insertions, 20 deletions
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index d03efc4..052d45f 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -185,10 +185,10 @@ class CliBase(object):
help='The user ID, gpg key uid')
- def parse_args(self, args):
+ def parse_args(self, argv):
'''Parse a list of aruments
- @param args: list
+ @param argv: list
@returns argparse.Namespace object
'''
#self.logger.debug('CliBase: parse_args; args: %s' % args)
@@ -225,7 +225,7 @@ class CliBase(object):
action_parser.set_defaults(action=name)
self._add_options(action_parser, self.cli_config['Action_Options'][name])
- parsed_args = parser.parse_args(args)
+ parsed_args = parser.parse_args(argv)
action = getattr(parsed_args, 'action', None)
if not action:
parser.print_usage()
@@ -241,10 +241,11 @@ class CliBase(object):
getattr(self, '_option_%s' % opt)(parser)
- def run(self, args):
- '''Run the args passed in
+ def setup(self, args, configs):
+ '''Set up the args and configs passed in
@param args: list or argparse.Namespace object
+ @param configs: list
'''
message = None
if not args:
@@ -253,8 +254,9 @@ class CliBase(object):
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()
+ self.config.read_config()
+ else:
+ self.config.read_config(configs)
# establish our logger and update it in the imported files
self.logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
@@ -278,7 +280,10 @@ class CliBase(object):
cat = args.category
if not self._check_category(cat):
return False
+ return True
+
+ def run(self, args):
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, self.logger)
diff --git a/gkeys/gkeys/cli.py b/gkeys/gkeys/cli.py
index df81882..31457e0 100644
--- a/gkeys/gkeys/cli.py
+++ b/gkeys/gkeys/cli.py
@@ -13,6 +13,7 @@
from __future__ import print_function
+import os
import sys
from gkeys.base import CliBase
@@ -52,7 +53,12 @@ class Main(CliBase):
Defaults to sys.argv[1:]
"""
if args:
- return self.run(self.parse_args(args))
+ ok = self.setup(args)
+ if ok:
+ return self.run(self.parse_args(args))
else:
- return self.run(self.parse_args(sys.argv[1:]))
-
+ args = self.parse_args(sys.argv[1:])
+ ok = self.setup(args, os.path.join(self.config['configdir'],'gkeys.conf'))
+ if ok:
+ return self.run(args)
+ return False
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 8fa4c1b..5d3923f 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -48,9 +48,9 @@ class GKeysConfig(GPGConfig):
self.defaults['config'] = config
self.defaults['configdir'] = os.path.dirname(config)
else:
- homedir = os.path.expanduser('~')
- self.defaults['configdir'] = homedir
- self.defaults['config']= os.path.join(homedir, '.gkeys.conf')
+ self.homedir = os.path.expanduser('~')
+ self.defaults['configdir'] = self.homedir
+ self.defaults['config']= os.path.join(self.homedir, '.gkeys.conf')
if not os.path.exists(self.defaults['config']):
self.defaults['configdir'] = path([self.root, EPREFIX, '/etc/gkeys'])
self.defaults['config'] = '%(configdir)s/gkeys.conf'
@@ -83,7 +83,7 @@ class GKeysConfig(GPGConfig):
self.defaults['verify-seeds'] = {}
- def read_config(self):
+ def read_config(self, filename=None):
'''Reads the config file into memory
'''
if "%(configdir)s" in self.defaults['config']:
@@ -97,18 +97,23 @@ class GKeysConfig(GPGConfig):
for key in ['gkeysdir', 'keyring', 'sign-keydir', 'logdir', 'seedsdir',
'keyserver']:
defaults[key] = self.defaults[key]
+ if filename == None:
+ filename = self.defaults['config']
self.configparser = SaneConfigParser(defaults)
- self.configparser.read(self.defaults['config'])
- # I consider this hacky, but due to shortcomings of ConfigParser
- # we need to reset the defaults redefined in the 'base' section
- for key in self.configparser.options('base'):
- self.defaults[key] = self.configparser.get('base', key)
- defaults[key] = self.defaults[key]
+ self.configparser.read(filename)
+ if self.configparser.has_section('base'):
+ # I consider this hacky, but due to shortcomings of ConfigParser
+ # we need to reset the defaults redefined in the 'base' section
+ for key in self.configparser.options('base'):
+ self.defaults[key] = self.configparser.get('base', key)
+ defaults[key] = self.defaults[key]
self.configparser._defaults = defaults
for section in self.configparser.sections():
if section == 'base':
continue
for key in self.configparser.options(section):
+ if section not in self.defaults:
+ self.defaults[section] = {}
self.defaults[section][key] = self.configparser.get(section, key)
def get_key(self, key, subkey=None):