--- 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