diff options
Diffstat (limited to 'gbp/config.py')
-rw-r--r-- | gbp/config.py | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/gbp/config.py b/gbp/config.py index b9948aca..b4d7d2e8 100644 --- a/gbp/config.py +++ b/gbp/config.py @@ -3,7 +3,7 @@ # (C) 2006,2007 Guido Guenther <agx@sigxcpu.org> """handles command line and config file option parsing for the gbp commands""" -from optparse import OptionParser +from optparse import OptionParser, OptionGroup from ConfigParser import SafeConfigParser import os.path from gbp.gbp_version import gbp_version @@ -71,6 +71,16 @@ class GbpOptionParser(OptionParser): self.__parse_config_files() OptionParser.__init__(self, usage=usage, version='%s %s' % (self.command, gbp_version)) + def get_default(self, option_name, **kwargs): + default = self.config[option_name] + if kwargs.has_key('action'): + if kwargs['action'] in [ 'store_true', 'store_false' ] and self.config[option_name]: + if self.config[option_name] in [ 'True', 'False' ]: + default = eval(self.config[option_name]) + else: + raise ValueError, "Boolean options must be True or False" + return default + def add_config_file_option(self, option_name, dest, help, **kwargs): """ set a option for the command line parser, the default is read from the config file @@ -81,15 +91,23 @@ class GbpOptionParser(OptionParser): @var help: help text @type help: string """ - default = self.config[option_name] - if kwargs.has_key('action'): - if kwargs['action'] in [ 'store_true', 'store_false'] and self.config[option_name]: - if self.config[option_name] in [ 'True', 'False' ]: - default = eval(self.config[option_name]) - else: - raise ValueError, "Boolean options must be True or False" - OptionParser.add_option(self,"--%s%s" % (self.prefix, option_name), dest=dest, - default=default, + OptionParser.add_option(self, "--%s%s" % (self.prefix, option_name), dest=dest, + default=self.get_default(option_name, **kwargs), help=help % self.config, **kwargs) +class GbpOptionGroup(OptionGroup): + def add_config_file_option(self, option_name, dest, help, **kwargs): + """ + set a option for the command line parser, the default is read from the config file + @var option_name: name of the option + @type option_name: string + @var dest: where to store this option + @type dest: string + @var help: help text + @type help: string + """ + OptionGroup.add_option(self, "--%s%s" % (self.parser.prefix, option_name), dest=dest, + default=self.parser.get_default(option_name, **kwargs), + help=help % self.parser.config, **kwargs) + # vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·: |