# HG changeset patch # User Tero Marttila # Date 1388097310 -7200 # Node ID 69e1b91cd83f99084923ec58ea93e844ecf502ee # Parent 62159e5b6685130521006f5127f684b3533dc079 pvl.args: support multiple --config's diff -r 62159e5b6685 -r 69e1b91cd83f pvl/args.py --- a/pvl/args.py Sun Dec 22 14:25:35 2013 +0200 +++ b/pvl/args.py Fri Dec 27 00:35:10 2013 +0200 @@ -31,7 +31,7 @@ general.add_option('--debug-module', action='append', metavar='MODULE', help="Enable logging for the given logger/module name") - parser.add_option('-c', '--config', metavar='PATH', + parser.add_option('-c', '--config', metavar='PATH', action='append', help="Read option defaults from config") parser.add_option('--config-encoding', metavar='CHARSET', default='utf-8', help="Unicode decoding for config file") @@ -47,6 +47,7 @@ logname = parser.prog, loglevel = logging.WARN, debug_module = [], + config = [], ) return general @@ -146,7 +147,8 @@ values.ensure_value(dest, ...) """ - def __init__ (self, defaults={ }) : + def __init__ (self, parser, defaults={ }) : + self._parser = parser self._defaults = defaults self._options = { } @@ -185,6 +187,13 @@ else : raise AttributeError(name) + def error (self, msg) : + """ + Raises an optparse error. + """ + + self._parser.error(msg) + def apply_config (options, parser, config, encoding=None) : """ Load options from config. @@ -195,7 +204,7 @@ config = configobj.ConfigObj(config, encoding = options.config_encoding if encoding is None else encoding, ) - config_options = Options(options._defaults) + config_options = Options(parser, options._defaults) # load scalars for scalar in config.scalars : @@ -226,10 +235,10 @@ Parse options, args from argv. """ - options, args = parser.parse_args(argv[1:], values=Options(parser.defaults)) + options, args = parser.parse_args(argv[1:], values=Options(parser, parser.defaults)) - if options.config : - options = apply_config(options, parser, options.config) + for config in options.config : + options = apply_config(options, parser, config) return options, args