# HG changeset patch # User Alexis S. L. Carvalho # Date 1160516600 10800 # Node ID 1700a103458e48c5ac849c72a0985ae46eb2769a # Parent a09be4317f9c03900e452c34c270e012b7ae25d0 move the parsing of --config options to commands.py diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -3275,6 +3275,20 @@ def load_extensions(ui): ui.warn(_("module %s overrides %s\n") % (name, t)) table.update(cmdtable) +def parseconfig(config): + """parse the --config options from the command line""" + parsed = [] + for cfg in config: + try: + name, value = cfg.split('=', 1) + section, name = name.split('.', 1) + if not section or not name: + raise IndexError + parsed.append((section, name, value)) + except (IndexError, ValueError): + raise util.Abort(_('malformed --config option: %s') % cfg) + return parsed + def dispatch(args): for name in 'SIGBREAK', 'SIGHUP', 'SIGTERM': num = getattr(signal, name, None) @@ -3306,7 +3320,7 @@ def dispatch(args): u.updateopts(options["verbose"], options["debug"], options["quiet"], not options["noninteractive"], options["traceback"], - options["config"]) + parseconfig(options["config"])) # enter the debugger before command execution if options['debugger']: diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -60,15 +60,8 @@ class ui(object): self.debugflag = (self.debugflag or debug) self.interactive = (self.interactive and interactive) self.traceback = self.traceback or traceback - for cfg in config: - try: - name, value = cfg.split('=', 1) - section, name = name.split('.', 1) - if not section or not name: - raise IndexError - self.setconfig(section, name, value) - except (IndexError, ValueError): - raise util.Abort(_('malformed --config option: %s') % cfg) + for section, name, value in config: + self.setconfig(section, name, value) def readconfig(self, fn, root=None): if isinstance(fn, basestring): diff --git a/tests/test-ui-config b/tests/test-ui-config --- a/tests/test-ui-config +++ b/tests/test-ui-config @@ -1,9 +1,9 @@ #!/usr/bin/env python -from mercurial import ui, util +from mercurial import ui, util, commands testui = ui.ui() -testui.updateopts(config=[ +parsed = commands.parseconfig([ 'values.string=string value', 'values.bool1=true', 'values.bool2=false', @@ -17,6 +17,7 @@ testui.updateopts(config=[ 'interpolation.value4=%(bad)1', 'interpolation.value5=%bad2', ]) +testui.updateopts(config=parsed) print repr(testui.configitems('values')) print repr(testui.configitems('lists'))