[CLI] skip anon args for `infer clang ...`

Summary:
`infer clang ...` was not being handled correctly and would error incorrectly.
Small fix before bigger change.

Reviewed By: mbouaziz

Differential Revision: D5036447

fbshipit-source-id: 87fcc40
master
Jules Villard 8 years ago committed by Facebook Github Bot
parent 5881b676a2
commit 81177dc711

@ -600,11 +600,10 @@ let mk_rest_actions ?(parse_mode=InferCommand) ?(in_help=[]) doc ~usage decode_a
decode_json = fun ~inferconfig_dir:_ _ -> []} ;
rest
let mk_subcommand command ?(accept_unknown_args=false) ?deprecated ~long ?(name=long)
let mk_subcommand command ?on_unknown_arg:(on_unknown=`Reject) ?deprecated ~long ?(name=long)
?parse_mode ?in_help command_doc =
let switch () =
curr_command := Some command;
let on_unknown = if accept_unknown_args then `Add else `Reject in
anon_arg_action := {!anon_arg_action with on_unknown} in
ignore(
mk ?deprecated ~long ~default:() ?parse_mode ?in_help ~meta:""

@ -189,8 +189,9 @@ val mk_command_doc : title:string -> section:int -> version:string -> date:strin
(** [mk_subcommand command ~long command_doc] defines the subcommand [command]. A subcommand is
activated by passing [--long], [name], or any [-key] for [key] in [deprecated] on the command
line. [name] defaults to [long]. A man page is automatically generated for [command] based on
the information in [command_doc]. *)
val mk_subcommand : command -> ?accept_unknown_args:bool ->
the information in [command_doc]. [on_unknown_arg] is the action taken on unknown anonymous
arguments; it is `Reject by default. *)
val mk_subcommand : command -> ?on_unknown_arg:[`Add | `Skip | `Reject] ->
?deprecated:string list -> long:string -> ?name:string ->
?parse_mode:parse_mode -> ?in_help:(command * string) list -> command_doc -> unit

@ -415,16 +415,18 @@ let exe_usage =
let anon_args = CLOpt.mk_anon ()
let () =
let command_accepts_unknown_arg =
List.mem ~equal:CLOpt.equal_command CLOpt.[Clang; Report] in
let on_unknown_arg_from_command (cmd: CLOpt.command) = match cmd with
| Clang -> `Skip
| Report -> `Add
| Analyze | Capture | Compile | ReportDiff | Run -> `Reject in
let command_deprecated =
List.Assoc.find ~equal:CLOpt.equal_command CLOpt.[ReportDiff, ["-diff"]] in
(* make sure we generate doc for all the commands we know about *)
List.iter CLOpt.all_commands ~f:(fun cmd ->
let { CommandDoc.long; command_doc } = CommandDoc.data_of_command cmd in
let accept_unknown_args = command_accepts_unknown_arg cmd in
let on_unknown_arg = on_unknown_arg_from_command cmd in
let deprecated = command_deprecated cmd in
CLOpt.mk_subcommand cmd ~long ~accept_unknown_args ?deprecated command_doc)
CLOpt.mk_subcommand cmd ~long ~on_unknown_arg ?deprecated command_doc)
let abs_struct =
CLOpt.mk_int ~deprecated:["absstruct"] ~long:"abs-struct" ~default:1

Loading…
Cancel
Save