Mercurial > hg
view contrib/simplemerge @ 31886:bdda942f4b9c
templater: add support for keyword arguments
Unlike revset, function arguments are pre-processed in templater. That's why
we need to define argspec per function. An argspec field looks somewhat
redundant in @templatefunc definition as a name field contains human-readable
list of arguments. I'll make function doc be built from argspec later.
Ported separate() function as an example.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 03 Apr 2017 21:22:39 +0900 |
parents | 541949a10a68 |
children | aed91971d88c |
line wrap: on
line source
#!/usr/bin/env python from mercurial import demandimport demandimport.enable() import getopt import sys from mercurial.i18n import _ from mercurial import error, simplemerge, fancyopts, util, ui options = [('L', 'label', [], _('labels to use on conflict markers')), ('a', 'text', None, _('treat all files as text')), ('p', 'print', None, _('print results instead of overwriting LOCAL')), ('', 'no-minimal', None, _('no effect (DEPRECATED)')), ('h', 'help', None, _('display help and exit')), ('q', 'quiet', None, _('suppress output'))] usage = _('''simplemerge [OPTS] LOCAL BASE OTHER Simple three-way file merge utility with a minimal feature set. Apply to LOCAL the changes necessary to go from BASE to OTHER. By default, LOCAL is overwritten with the results of this operation. ''') class ParseError(Exception): """Exception raised on errors in parsing the command line.""" def showhelp(): sys.stdout.write(usage) sys.stdout.write('\noptions:\n') out_opts = [] for shortopt, longopt, default, desc in options: out_opts.append(('%2s%s' % (shortopt and '-%s' % shortopt, longopt and ' --%s' % longopt), '%s' % desc)) opts_len = max([len(opt[0]) for opt in out_opts]) for first, second in out_opts: sys.stdout.write(' %-*s %s\n' % (opts_len, first, second)) try: for fp in (sys.stdin, sys.stdout, sys.stderr): util.setbinary(fp) opts = {} try: args = fancyopts.fancyopts(sys.argv[1:], options, opts) except getopt.GetoptError as e: raise ParseError(e) if opts['help']: showhelp() sys.exit(0) if len(args) != 3: raise ParseError(_('wrong number of arguments')) sys.exit(simplemerge.simplemerge(ui.ui.load(), *args, **opts)) except ParseError as e: sys.stdout.write("%s: %s\n" % (sys.argv[0], e)) showhelp() sys.exit(1) except error.Abort as e: sys.stderr.write("abort: %s\n" % e) sys.exit(255) except KeyboardInterrupt: sys.exit(255)