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):
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
50 # read our config file overrides
54 def _add_gkey_defaults(self):
55 self.defaults['keysdir'] = path([self.root, EPREFIX, '/var/gentoo/gkeys'])
56 self.defaults['devkeydir'] = '%(keysdir)s/devs'
57 self.defaults['releasekeydir'] = '%(keysdir)s/release'
58 self.defaults['knownkeysfile'] = '%(keysdir)s/knownkeys'
59 self.fedualts['releaseseedfile'] = '%(configdir)s/release.seeds'
60 self.fedualts['devseedfile'] = '%(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 if self.configparser and self.configparser.has_option('MAIN', key):
78 return self.configparser.get('MAIN', key)
80 super('GKeysConfig', self)._get_(key)
83 class GKEY(namedtuple('GKEY', ['name', 'keyid', 'longkeyid',
84 'fingerprint', 'keyring'])):
85 '''Class to hold the relavent info about a key'''
90 '''Returns a list of the field values'''
92 for f in self._fields:
93 v.append(getattr(self, f))
96 def value_string(self):
97 '''Returns a space separated string of the field values'''
98 return ' '.join([str(x) for x in self.values()])