aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-12-23 13:11:57 -0800
committerBrian Dolbec <dolsen@gentoo.org>2014-12-23 13:11:57 -0800
commit316554e0b6875e86e4ecd96a9eca48fa1966140f (patch)
treea9c379626cb73a1048fb89223def027fbf574aca /gkeys/gkeys/base.py
parentgkeys/config.py: Subclass ConfigParser to be able to set defaults in the config (diff)
downloadgentoo-keys-316554e0b6875e86e4ecd96a9eca48fa1966140f.tar.gz
gentoo-keys-316554e0b6875e86e4ecd96a9eca48fa1966140f.tar.bz2
gentoo-keys-316554e0b6875e86e4ecd96a9eca48fa1966140f.zip
gkeys/base.py: Make the category/seedfile choices dynamic
Diffstat (limited to 'gkeys/gkeys/base.py')
-rw-r--r--gkeys/gkeys/base.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index a5e3bfa..af66ff3 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -80,7 +80,7 @@ class CliBase(object):
@staticmethod
def _option_category(parser=None):
parser.add_argument('-C', '--category',
- choices=['rel', 'dev', 'overlays', 'sign'], dest='category', default=None,
+ dest='category', default=None,
help='The key or seed directory category to use or update')
@staticmethod
@@ -216,6 +216,16 @@ class CliBase(object):
logger.debug("Main: run; Found alternate config request: %s"
% args.config)
+ # check if a -C, --category was input
+ # if it was, check if the category is listed in the [seeds]
+ cat = None
+ if 'category' in args:
+ cat = args.category
+ elif 'seedfile' in args:
+ cat = args.seedfile
+ if not self._check_category(cat):
+ return False
+
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, logger)
@@ -251,3 +261,18 @@ class CliBase(object):
def output_failed(self, failed):
pass
+
+
+ def _check_category(self, category=None):
+ '''Checks that the category (seedfile) is listed
+ in the [seeds] config or defaults['seeds'] section
+
+ @param args: configparser instance
+ @return boolean
+ '''
+ available_cats = list(self.config.defaults['seeds'])
+ if category and category not in available_cats:
+ self.config.logger.error("Invalid category or seedfile entered: %s" % category)
+ self.config.logger.error("Available categories or seedfiles: %s" % ', '.join(sorted(available_cats)))
+ return False
+ return True