1#!/usr/bin/env python
2# -*- coding:utf-8 -*-
3
4
5
6
7import sys
8
9from ..args import (
10    ConfigBackedParser,
11    add_generic_args, add_diff_args, add_merge_args,
12    add_web_args, add_filename_args, args_for_server, args_for_browse,
13    process_diff_flags, Path)
14from .nbdimeserver import main_server as run_server
15from .webutil import browse
16
17
18def build_arg_parser():
19    """
20    Creates an argument parser for the merge tool, that also lets the
21    user specify a port and displays a help message.
22    """
23    description = 'Mergetool for Nbdime.'
24    parser = ConfigBackedParser(
25        description=description,
26        add_help=True
27        )
28    add_generic_args(parser)
29    add_diff_args(parser)
30    add_merge_args(parser)
31    add_web_args(parser, 0)
32    add_filename_args(parser, ["base", "local", "remote"])
33    parser.add_argument(
34        '--out',
35        type=Path,
36        default=None,
37        help="if supplied, the merged notebook is written "
38             "to this file. Otherwise it cannot be saved.")
39    return parser
40
41
42def main(args=None):
43    if args is None:
44        args = sys.argv[1:]
45    arguments = build_arg_parser().parse_args(args)
46    process_diff_flags(arguments)
47    base = arguments.base
48    local = arguments.local
49    remote = arguments.remote
50    output = arguments.out
51    return run_server(
52        outputfilename=output,
53        on_port=lambda port: browse(
54            port=port,
55            rel_url='merge',
56            base=base, local=local, remote=remote,
57            **args_for_browse(arguments)),
58        **args_for_server(arguments))
59
60
61if __name__ == "__main__":
62    sys.exit(main())
63