12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- module Report = Qsp_syntax.Report
- let input_files = ref []
- let usage =
- Printf.sprintf "%s input_file" (Filename.basename Sys.executable_name)
- let anon_fun filename = input_files := filename :: !input_files
- let level_value = ref None
- let reset_line = ref false
- let interractive = ref true
- type filters = { level : Report.level option }
- type t = { reset_line : bool; filters : filters; interractive : bool }
- (** All the arguments given from the command line *)
- let level : string -> unit =
- fun str_level ->
- match Report.level_of_string str_level with
- | Ok level_ -> level_value := Some level_
- | Error e ->
- print_endline e;
- exit 1
- let speclist =
- let common_arguments =
- [
- ( "--version",
- Arg.Unit
- (fun () ->
- Printf.printf "Version %s\n" Tools.Git_hash.revision;
- exit 0),
- "\tDisplay the version of the application and exit" );
- ("--level", Arg.String level, "\tMessage level [debug, warn, error]");
- ( "--global",
- Arg.Set reset_line,
- "\tEach line is refered from the begining of the file and not the \
- location" );
- ]
- and windows_arguments =
- match Sys.os_type with
- | "Win32" ->
- [
- ( "--no-prompt",
- Arg.Clear interractive,
- "\tDo not ask the user to press enter after processing the source"
- );
- ]
- | _ ->
- interractive := false;
- []
- in
- common_arguments @ windows_arguments
- let parse : unit -> string list * t =
- fun () ->
- let () = Arg.parse (Arg.align speclist) anon_fun usage in
- match !input_files with
- | [] ->
- Arg.usage (Arg.align speclist) usage;
- prerr_endline "";
- prerr_endline "Error, you should provide at least one file to parse.";
- exit 1
- | _ ->
- let filters = { level = !level_value } in
- ( !input_files,
- { reset_line = !reset_line; filters; interractive = !interractive } )
|