5 Gentoo-keys - config.py
7 Holds configuration keys and values
9 @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
10 @license: GNU GNU GPL2, see COPYING for details.
15 from collections import namedtuple
18 from pygpg.config import GPGConfig
20 from gkeys.utils import path
23 # establish the eprefix, initially set so eprefixify can
25 EPREFIX = "@GENTOO_PORTAGE_EPREFIX@"
27 # check and set it if it wasn't
28 if "GENTOO_PORTAGE_EPREFIX" in EPREFIX:
33 class GKeysConfig(GPGConfig):
34 """ Configuration superclass which holds our gentoo-keys
35 config settings for pygpg """
37 def __init__ (self, config=None, root=None, read_configfile=False):
38 """ Class initialiser """
39 GPGConfig.__init__(self)
41 self.root = root or ''
43 self.defaults['config'] = config
44 self.defaults['configdir'] = os.path.dirname(config)
46 self.defaults['configdir'] = path([self.root, EPREFIX, '/etc/gentoo-keys'])
47 self.defaults['config'] = '%(configdir)s/gkeys.conf'
48 self.configparser = None
53 def _add_gkey_defaults(self):
54 self.defaults['key-sdir'] = path([self.root, EPREFIX, '/var/gentoo/gkeys'])
55 self.defaults['dev-keydir'] = '%(keysdir)s/devs'
56 self.defaults['release-keydir'] = '%(keysdir)s/release'
57 self.defaults['overlays-keydir'] = '%(keysdir)s/overlays'
58 self.defaults['known-keysfile'] = '%(keysdir)s/knownkeys'
59 self.defaults['release-seedfile'] = '%(configdir)s/release.seeds'
60 self.defaults['dev-seedfile'] = '%(configdir)s/developer.seeds'
64 def read_config(self):
65 '''Reads the config file into memory
67 if "%(configdir)s" in self.defaults['config']:
69 self.defaults['config'] = self.defaults['config'] \
70 % {'configdir': self.defaults['configdir']}
71 defaults = self.get_defaults()
72 self.configparser = ConfigParser.ConfigParser(defaults)
73 self.configparser.add_section('MAIN')
74 self.configparser.read(defaults['config'])
77 def get_key(self, key):
78 return self._get_(key)
82 if self.configparser and self.configparser.has_option('MAIN', key):
83 return self.configparser.get('MAIN', key)
84 elif key in self.options:
85 return self.options[key]
86 elif key in self.defaults:
87 return self.defaults[key]
88 logger.error("GKeysConfig: _get_(); didn't find :", key)
92 class GKEY(namedtuple('GKEY', ['name', 'keyid', 'longkeyid',
93 'fingerprint', 'keyring'])):
94 '''Class to hold the relavent info about a key'''
99 '''Returns a list of the field values'''
101 for f in self._fields:
102 v.append(getattr(self, f))
105 def value_string(self):
106 '''Returns a space separated string of the field values'''
107 return ' '.join([str(x) for x in self.values()])