diff options
author | Brian Dolbec <dolsen@gentoo.org> | 2015-07-28 23:18:41 -0700 |
---|---|---|
committer | Brian Dolbec <dolsen@gentoo.org> | 2015-08-08 08:51:40 -0700 |
commit | 317de4981cc9208f5ff4595f048fb17f522283f6 (patch) | |
tree | b597044179cfbed5b27e9269e81cfc72f1239eed | |
parent | gentoo-keys: Modify the cli base for the new gkeys-gpg gpg wrapper command (diff) | |
download | gentoo-keys-317de4981cc9208f5ff4595f048fb17f522283f6.tar.gz gentoo-keys-317de4981cc9208f5ff4595f048fb17f522283f6.tar.bz2 gentoo-keys-317de4981cc9208f5ff4595f048fb17f522283f6.zip |
gkeys: [1 of 2] Creation of a new ActionBase class
This class is to hold non-action functions/methods
Restructure external handlers.
Creation of @property decorated keyhandler, seedhandler, gpg functions to
initialize and return.the classwide instances of their code.
-rw-r--r-- | gkeys/gkeys/actionbase.py | 90 | ||||
-rw-r--r-- | gkeys/gkeys/actions.py | 10 |
2 files changed, 93 insertions, 7 deletions
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py new file mode 100644 index 0000000..77748c5 --- /dev/null +++ b/gkeys/gkeys/actionbase.py @@ -0,0 +1,90 @@ +# +#-*- coding:utf-8 -*- + +""" + Gentoo-keys - actionbase.py + + Base api interface module + + @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org> + @license: GNU GPL2, see COPYING for details. +""" + +from __future__ import print_function + +import os +import sys + +if sys.version_info[0] >= 3: + _unicode = str +else: + _unicode = unicode + + +from snakeoil.demandload import demandload + +demandload( + "json:load", + "gkeys.lib:GkeysGPG", + "gkeys.keyhandler:KeyHandler", +) + + + +class ActionBase(object): + '''Base actions class holding comon functions and init''' + + def __init__(self, config, output=None, logger=None): + self.config = config + self.output = output + self.logger = logger + self.seeds = None + self._seedhandler = None + self._keyhandler = None + self._gpg = None + self.category = None + + + @property + def gpg(self): + '''Holds the classwide GkeysGPG instance''' + if not self._gpg: + self._gpg = GkeysGPG(self.config, + self._set_category(self.category), self.logger) + else: + self._gpg.basedir = self._set_category(self.category) + return self._gpg + + + @property + def keyhandler(self): + '''Holds the classwide KeyHandler instance''' + if not self._keyhandler: + self._init_keyhandler() + return self._keyhandler + + + def _init_keyhandler(self): + self._keyhandler = KeyHandler(self.config, self.logger) + self._seedhandler = self._keyhandler.seedhandler + + + @property + def seedhandler(self): + '''Holds the classwide SeedHandler instance + which is a convienience variable for the keyhandler's instance of it''' + if not self._seedhandler: + self._init_keyhandler() + return self._seedhandler + + + def _set_category(self, cat): + keyring = self.config.get_key('keyring') + if "foo-bar'd" in keyring: + raise + self.category = cat + catdir = os.path.join(keyring, cat) + self.logger.debug(_unicode("ACTIONS: _set_category; catdir = %s") % catdir) + return catdir + + diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py index e24d24d..11f1ca8 100644 --- a/gkeys/gkeys/actions.py +++ b/gkeys/gkeys/actions.py @@ -27,7 +27,7 @@ else: from collections import defaultdict from snakeoil.demandload import demandload - +from gkeys.actionbase import ActionBase from gkeys.gkey import GKEY from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn @@ -41,14 +41,11 @@ demandload( EXTENSIONS = ['.sig', '.asc', '.gpg','.gpgsig'] -class Actions(object): +class Actions(ActionBase): '''Primary API actions''' def __init__(self, config, output=None, logger=None): - self.config = config - self.output = output - self.logger = logger - self.seeds = None + ActionBase.__init__(self, config, output, logger) @staticmethod @@ -68,7 +65,6 @@ class Actions(object): '''-----< general actions >------''' pass - def listseed(self, args): '''Pretty-print the selected seed file''' handler = SeedHandler(self.logger, self.config) |