1#!/usr/bin/env swipl
    2
    3:- initialization(main, main).    4
    5:- nodebug(dap(main)).    6
    7:- use_module(server).    8:- use_module(library(swipl_debug_adapter)).    9
   10main(Argv) :-
   11    OptsSpec =
   12    [ [opt(version),
   13       default(false),
   14       type(boolean),
   15       shortflags(['V']),
   16       longflags([version]),
   17       help('Print version information')
   18      ],
   19      [opt(help),
   20       default(false),
   21       type(boolean),
   22       shortflags([h]),
   23       longflags([help]),
   24       help('Print usage information')
   25      ],
   26      [opt(debug),
   27       default(true),
   28       type(boolean),
   29       shortflags([d]),
   30       longflags([debug]),
   31       help('Print debug messages to stderr')
   32      ],
   33      [opt(timeout),
   34       default(3600),
   35       type(integer),
   36       shortflags(['T']),
   37       longflags([timeout]),
   38       help('Set a global timeout after which the server aborts. Useful for CI')
   39      ]
   40    ],
   41
   42    opt_parse(OptsSpec, Argv, Opts, _PosArgs),
   43
   44    ( option(version(true), Opts) -> pack_info(debug_adapter)
   45    ; option(help(   true), Opts) -> opt_help(OptsSpec, Help), write(Help)
   46    ; set_prolog_flag(toplevel_prompt, ''),
   47      (   option(debug(  true), Opts)
   48      ->  debug(dap(_))
   49      ;   true
   50      ),
   51      current_input(In),
   52      current_output(Out),
   53      option(timeout(Timeout), Opts),
   54      da_server([in(In), out(Out), on_command(swipl_debug_adapter_command_callback), timeout(Timeout)])
   55    )