commit:     316554e0b6875e86e4ecd96a9eca48fa1966140f
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:11:57 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:11:57 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=316554e0

gkeys/base.py: Make the category/seedfile choices dynamic

---
 gkeys/gkeys/base.py | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

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

Reply via email to