Client: do not display usage on all errors
This commit is contained in:
parent
64a41538c8
commit
40ea190364
@ -1190,24 +1190,24 @@ let pp_cli_errors ppf ~executable_name ~global_options ~default errs =
|
|||||||
| Bad_argument (i, v) ->
|
| Bad_argument (i, v) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Erroneous command line argument %d (%s)." i v ;
|
"Erroneous command line argument %d (%s)." i v ;
|
||||||
[]
|
Some []
|
||||||
| Option_expected_argument (arg, command) ->
|
| Option_expected_argument (arg, command) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Command line option @{<opt>%s@} expects an argument." arg ;
|
"Command line option @{<opt>%s@} expects an argument." arg ;
|
||||||
Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command
|
Some (Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command)
|
||||||
| Bad_option_argument (arg, command) ->
|
| Bad_option_argument (arg, command) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Wrong value for command line option @{<opt>%s@}." arg ;
|
"Wrong value for command line option @{<opt>%s@}." arg ;
|
||||||
Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command
|
Some (Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command)
|
||||||
| Multiple_occurences (arg, command) ->
|
| Multiple_occurences (arg, command) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Command line option @{<opt>%s@} appears multiple times." arg ;
|
"Command line option @{<opt>%s@} appears multiple times." arg ;
|
||||||
Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command
|
Some (Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command)
|
||||||
| No_manual_entry [ keyword ] ->
|
| No_manual_entry [ keyword ] ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"No manual entry that match @{<hilight>%s@}."
|
"No manual entry that match @{<hilight>%s@}."
|
||||||
keyword ;
|
keyword ;
|
||||||
[]
|
Some []
|
||||||
| No_manual_entry (keyword :: keywords) ->
|
| No_manual_entry (keyword :: keywords) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"No manual entry that match %a and @{<hilight>%s@}."
|
"No manual entry that match %a and @{<hilight>%s@}."
|
||||||
@ -1216,29 +1216,29 @@ let pp_cli_errors ppf ~executable_name ~global_options ~default errs =
|
|||||||
(fun ppf keyword -> Format.fprintf ppf "@{<hilight>%s@}" keyword))
|
(fun ppf keyword -> Format.fprintf ppf "@{<hilight>%s@}" keyword))
|
||||||
keywords
|
keywords
|
||||||
keyword ;
|
keyword ;
|
||||||
[]
|
Some []
|
||||||
| Unknown_option (option, command) ->
|
| Unknown_option (option, command) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Unexpected command line option @{<opt>%s@}."
|
"Unexpected command line option @{<opt>%s@}."
|
||||||
option ;
|
option ;
|
||||||
Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command
|
Some (Option.unopt_map ~f:(fun command -> [ Ex command ]) ~default:[] command)
|
||||||
| Extra_arguments (extra, command) ->
|
| Extra_arguments (extra, command) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"Extra command line arguments:@, @[<h>%a@]."
|
"Extra command line arguments:@, @[<h>%a@]."
|
||||||
(Format.pp_print_list (fun ppf -> Format.fprintf ppf "%s")) extra ;
|
(Format.pp_print_list (fun ppf -> Format.fprintf ppf "%s")) extra ;
|
||||||
[ Ex command ]
|
Some [ Ex command ]
|
||||||
| Unterminated_command (_, commands) ->
|
| Unterminated_command (_, commands) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"@[<v 2>Unterminated command, here are possible completions.@,%a@]"
|
"@[<v 2>Unterminated command, here are possible completions.@,%a@]"
|
||||||
(Format.pp_print_list
|
(Format.pp_print_list
|
||||||
(fun ppf (Command { params ; options = Argument { spec ; _ } ; _ }) ->
|
(fun ppf (Command { params ; options = Argument { spec ; _ } ; _ }) ->
|
||||||
print_commandline ppf ([], spec, params))) commands ;
|
print_commandline ppf ([], spec, params))) commands ;
|
||||||
List.map (fun c -> Ex c) commands
|
Some (List.map (fun c -> Ex c) commands)
|
||||||
| Command_not_found ([], _all_commands) ->
|
| Command_not_found ([], _all_commands) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"@[<v 0>Unrecognized command.@,\
|
"@[<v 0>Unrecognized command.@,\
|
||||||
Try using the @{<kwd>man@} command to get more information.@]" ;
|
Try using the @{<kwd>man@} command to get more information.@]" ;
|
||||||
[]
|
Some []
|
||||||
| Command_not_found (_, commands) ->
|
| Command_not_found (_, commands) ->
|
||||||
Format.fprintf ppf
|
Format.fprintf ppf
|
||||||
"@[<v 0>Unrecognized command.@,\
|
"@[<v 0>Unrecognized command.@,\
|
||||||
@ -1246,20 +1246,29 @@ let pp_cli_errors ppf ~executable_name ~global_options ~default errs =
|
|||||||
(Format.pp_print_list
|
(Format.pp_print_list
|
||||||
(fun ppf (Command { params ; options = Argument { spec ; _ } ; _ }) ->
|
(fun ppf (Command { params ; options = Argument { spec ; _ } ; _ }) ->
|
||||||
print_commandline ppf ([], spec, params))) commands ;
|
print_commandline ppf ([], spec, params))) commands ;
|
||||||
List.map (fun c -> Ex c) commands
|
Some (List.map (fun c -> Ex c) commands)
|
||||||
| err -> default ppf err ; [] in
|
| err -> default ppf err ; None in
|
||||||
let rec pp acc = function
|
let rec pp acc errs =
|
||||||
| [] -> []
|
let return command =
|
||||||
| [ last ] -> pp_one last @ acc
|
match command, acc with
|
||||||
|
| None, _ -> acc
|
||||||
|
| Some command, Some commands -> Some (command @ commands)
|
||||||
|
| Some command, None -> Some command in
|
||||||
|
match errs with
|
||||||
|
| [] -> None
|
||||||
|
| [ last ] -> return (pp_one last)
|
||||||
| err :: errs ->
|
| err :: errs ->
|
||||||
let acc = pp_one err @ acc in
|
let acc = return (pp_one err) in
|
||||||
Format.fprintf ppf "@," ;
|
Format.fprintf ppf "@," ;
|
||||||
pp acc errs in
|
pp acc errs in
|
||||||
Format.fprintf ppf "@[<v 2>@{<error>@{<title>Error@}@}@," ;
|
Format.fprintf ppf "@[<v 2>@{<error>@{<title>Error@}@}@," ;
|
||||||
let commands = pp [] errs in
|
match pp None errs with
|
||||||
Format.fprintf ppf "@]@\n@\n@[<v 0>%a@]"
|
| None ->
|
||||||
(fun ppf commands -> usage_internal ppf ~executable_name ~global_options commands)
|
Format.fprintf ppf "@]@\n"
|
||||||
commands
|
| Some commands ->
|
||||||
|
Format.fprintf ppf "@]@\n@\n@[<v 0>%a@]"
|
||||||
|
(fun ppf commands -> usage_internal ppf ~executable_name ~global_options commands)
|
||||||
|
commands
|
||||||
|
|
||||||
let usage ppf ~executable_name ~global_options commands =
|
let usage ppf ~executable_name ~global_options commands =
|
||||||
usage_internal ppf
|
usage_internal ppf
|
||||||
|
Loading…
Reference in New Issue
Block a user