aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2015-07-28 23:18:41 -0700
committerBrian Dolbec <dolsen@gentoo.org>2015-08-08 08:51:40 -0700
commit317de4981cc9208f5ff4595f048fb17f522283f6 (patch)
treeb597044179cfbed5b27e9269e81cfc72f1239eed
parentgentoo-keys: Modify the cli base for the new gkeys-gpg gpg wrapper command (diff)
downloadgentoo-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.py90
-rw-r--r--gkeys/gkeys/actions.py10
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)