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