contrib/simplemerge
changeset 39790 d3e940a32be0
parent 37120 a8a902d7176e
child 39791 1dd82ecb869b
equal deleted inserted replaced
39789:e961f18a0094 39790:d3e940a32be0
    17 )
    17 )
    18 from mercurial.utils import (
    18 from mercurial.utils import (
    19     procutil,
    19     procutil,
    20 )
    20 )
    21 
    21 
    22 options = [('L', 'label', [], _('labels to use on conflict markers')),
    22 options = [(b'L', b'label', [], _(b'labels to use on conflict markers')),
    23            ('a', 'text', None, _('treat all files as text')),
    23            (b'a', b'text', None, _(b'treat all files as text')),
    24            ('p', 'print', None,
    24            (b'p', b'print', None,
    25             _('print results instead of overwriting LOCAL')),
    25             _(b'print results instead of overwriting LOCAL')),
    26            ('', 'no-minimal', None, _('no effect (DEPRECATED)')),
    26            (b'', b'no-minimal', None, _(b'no effect (DEPRECATED)')),
    27            ('h', 'help', None, _('display help and exit')),
    27            (b'h', b'help', None, _(b'display help and exit')),
    28            ('q', 'quiet', None, _('suppress output'))]
    28            (b'q', b'quiet', None, _(b'suppress output'))]
    29 
    29 
    30 usage = _('''simplemerge [OPTS] LOCAL BASE OTHER
    30 usage = _('''simplemerge [OPTS] LOCAL BASE OTHER
    31 
    31 
    32     Simple three-way file merge utility with a minimal feature set.
    32     Simple three-way file merge utility with a minimal feature set.
    33 
    33 
    39 class ParseError(Exception):
    39 class ParseError(Exception):
    40     """Exception raised on errors in parsing the command line."""
    40     """Exception raised on errors in parsing the command line."""
    41 
    41 
    42 def showhelp():
    42 def showhelp():
    43     sys.stdout.write(usage)
    43     sys.stdout.write(usage)
    44     sys.stdout.write('\noptions:\n')
    44     sys.stdout.write(b'\noptions:\n')
    45 
    45 
    46     out_opts = []
    46     out_opts = []
    47     for shortopt, longopt, default, desc in options:
    47     for shortopt, longopt, default, desc in options:
    48         out_opts.append(('%2s%s' % (shortopt and '-%s' % shortopt,
    48         out_opts.append((b'%2s%s' % (shortopt and b'-%s' % shortopt,
    49                                     longopt and ' --%s' % longopt),
    49                                      longopt and b' --%s' % longopt),
    50                          '%s' % desc))
    50                          b'%s' % desc))
    51     opts_len = max([len(opt[0]) for opt in out_opts])
    51     opts_len = max([len(opt[0]) for opt in out_opts])
    52     for first, second in out_opts:
    52     for first, second in out_opts:
    53         sys.stdout.write(' %-*s  %s\n' % (opts_len, first, second))
    53         sys.stdout.write(b' %-*s  %s\n' % (opts_len, first, second))
    54 
    54 
    55 try:
    55 try:
    56     for fp in (sys.stdin, sys.stdout, sys.stderr):
    56     for fp in (sys.stdin, sys.stdout, sys.stderr):
    57         procutil.setbinary(fp)
    57         procutil.setbinary(fp)
    58 
    58 
    59     opts = {}
    59     opts = {}
    60     try:
    60     try:
    61         args = fancyopts.fancyopts(sys.argv[1:], options, opts)
    61         args = fancyopts.fancyopts(sys.argv[1:], options, opts)
    62     except getopt.GetoptError as e:
    62     except getopt.GetoptError as e:
    63         raise ParseError(e)
    63         raise ParseError(e)
    64     if opts['help']:
    64     if opts[b'help']:
    65         showhelp()
    65         showhelp()
    66         sys.exit(0)
    66         sys.exit(0)
    67     if len(args) != 3:
    67     if len(args) != 3:
    68             raise ParseError(_('wrong number of arguments'))
    68             raise ParseError(_(b'wrong number of arguments'))
    69     local, base, other = args
    69     local, base, other = args
    70     sys.exit(simplemerge.simplemerge(uimod.ui.load(),
    70     sys.exit(simplemerge.simplemerge(uimod.ui.load(),
    71                                      context.arbitraryfilectx(local),
    71                                      context.arbitraryfilectx(local),
    72                                      context.arbitraryfilectx(base),
    72                                      context.arbitraryfilectx(base),
    73                                      context.arbitraryfilectx(other),
    73                                      context.arbitraryfilectx(other),
    74                                      **opts))
    74                                      **opts))
    75 except ParseError as e:
    75 except ParseError as e:
    76     sys.stdout.write("%s: %s\n" % (sys.argv[0], e))
    76     sys.stdout.write(b"%s: %s\n" % (sys.argv[0], e))
    77     showhelp()
    77     showhelp()
    78     sys.exit(1)
    78     sys.exit(1)
    79 except error.Abort as e:
    79 except error.Abort as e:
    80     sys.stderr.write("abort: %s\n" % e)
    80     sys.stderr.write(b"abort: %s\n" % e)
    81     sys.exit(255)
    81     sys.exit(255)
    82 except KeyboardInterrupt:
    82 except KeyboardInterrupt:
    83     sys.exit(255)
    83     sys.exit(255)