From 4c426df5e020be62572afd0a542ebd9ca53a733f Mon Sep 17 00:00:00 2001 From: ZyX Date: Thu, 2 May 2013 14:13:43 +0400 Subject: [PATCH] Move --config and --theme_option processing to finish_args --- powerline/shell.py | 22 ++++++++++++++++------ scripts/powerline | 5 +++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/powerline/shell.py b/powerline/shell.py index 4e8aa789..2ff2c9e4 100644 --- a/powerline/shell.py +++ b/powerline/shell.py @@ -7,8 +7,9 @@ from powerline.lib import mergedicts, parsedotval def mergeargs(argvalue): if not argvalue: return None - r = dict([argvalue[0]]) - for subval in argvalue[1:]: + argvalue = iter(argvalue) + r = dict([next(argvalue)]) + for subval in argvalue: mergedicts(r, dict([subval])) return r @@ -16,13 +17,13 @@ def mergeargs(argvalue): class ShellPowerline(Powerline): def __init__(self, args, **kwargs): self.args = args - self.theme_option = mergeargs(args.theme_option) or {} + self.theme_option = args.theme_option super(ShellPowerline, self).__init__(args.ext[0], args.renderer_module, **kwargs) def load_main_config(self): r = super(ShellPowerline, self).load_main_config() if self.args.config: - mergedicts(r, mergeargs(self.args.config)) + mergedicts(r, self.args.config) return r def load_theme_config(self, name): @@ -49,7 +50,16 @@ def get_argparser(parser=None, *args, **kwargs): p.add_argument('-w', '--width', type=int) p.add_argument('--last_exit_code', metavar='INT', type=int) p.add_argument('--last_pipe_status', metavar='LIST', default='', type=lambda s: [int(status) for status in s.split()]) - p.add_argument('-c', '--config', metavar='KEY.KEY=VALUE', type=parsedotval, action='append') - p.add_argument('-t', '--theme_option', metavar='THEME.KEY.KEY=VALUE', type=parsedotval, action='append') + p.add_argument('-c', '--config', metavar='KEY.KEY=VALUE', action='append') + p.add_argument('-t', '--theme_option', metavar='THEME.KEY.KEY=VALUE', action='append') p.add_argument('-p', '--config_path', metavar='PATH') return p + + +def finish_args(args): + if args.config: + args.config = mergeargs((parsedotval(v) for v in args.config)) + if args.theme_option: + args.theme_option = mergeargs((parsedotval(v) for v in args.config)) + else: + args.theme_option = {} diff --git a/scripts/powerline b/scripts/powerline index 8cb88935..c4e8b0aa 100755 --- a/scripts/powerline +++ b/scripts/powerline @@ -5,14 +5,15 @@ import sys import os try: - from powerline.shell import ShellPowerline, get_argparser + from powerline.shell import ShellPowerline, get_argparser, finish_args except ImportError: import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) - from powerline.shell import ShellPowerline, get_argparser # NOQA + from powerline.shell import ShellPowerline, get_argparser, finish_args # NOQA if __name__ == '__main__': args = get_argparser(description=__doc__).parse_args() + finish_args(args) powerline = ShellPowerline(args, run_once=True) rendered = powerline.render( width=args.width,