This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
|
|
@ -0,0 +1,107 @@
|
|||
(** Mock ocaml-index real CLI *)
|
||||
|
||||
open Cmdliner
|
||||
|
||||
let touch file =
|
||||
let chan = open_out file in
|
||||
close_out chan
|
||||
;;
|
||||
|
||||
module Common = struct
|
||||
let set_log_level _ _ = ()
|
||||
|
||||
let verbose =
|
||||
let doc = "increase log verbosity" in
|
||||
Arg.(value & flag & info [ "v"; "verbose" ] ~doc)
|
||||
;;
|
||||
|
||||
let debug =
|
||||
let doc = "set maximum log verbosity" in
|
||||
Arg.(value & flag & info [ "debug" ] ~doc)
|
||||
;;
|
||||
|
||||
let with_log = Term.(const set_log_level $ debug $ verbose)
|
||||
|
||||
let output_file =
|
||||
let doc = "name of the generated index" in
|
||||
Arg.(value & opt string "project.ocaml-index" & info [ "o"; "output-file" ] ~doc)
|
||||
;;
|
||||
end
|
||||
|
||||
module Aggregate = struct
|
||||
let from_files _ _ output_file _ _ _ () = touch output_file
|
||||
|
||||
let root =
|
||||
let doc = "if provided all locations will be appended to that path" in
|
||||
Arg.(value & opt (some string) None & info [ "root" ] ~doc)
|
||||
;;
|
||||
|
||||
let files =
|
||||
let doc = "the files to index" in
|
||||
Arg.(value & pos_all string [] & info [] ~doc)
|
||||
;;
|
||||
|
||||
let build_path =
|
||||
let doc = "an extra directory to add to the load path" in
|
||||
Arg.(value & opt_all string [] & info [ "I" ] ~doc)
|
||||
;;
|
||||
|
||||
let store_shapes =
|
||||
let doc = "aggregate input-indexes shapes and store them in the new index" in
|
||||
Arg.(value & flag & info [ "store-shapes" ] ~doc)
|
||||
;;
|
||||
|
||||
let no_cmt =
|
||||
let doc = "" in
|
||||
Arg.(value & flag & info [ "no-cmt-load-path" ] ~doc)
|
||||
;;
|
||||
|
||||
let term =
|
||||
Term.(
|
||||
const from_files
|
||||
$ store_shapes
|
||||
$ root
|
||||
$ Common.output_file
|
||||
$ build_path
|
||||
$ no_cmt
|
||||
$ files
|
||||
$ Common.with_log)
|
||||
;;
|
||||
|
||||
let cmd =
|
||||
let info =
|
||||
let doc = "builds the index for a single $(i, .cmt) file" in
|
||||
Cmd.info "aggregate" ~doc
|
||||
in
|
||||
Cmd.v info term
|
||||
;;
|
||||
end
|
||||
|
||||
module Dump = struct
|
||||
let dump file () = Printf.printf "Dump %s" file
|
||||
|
||||
let file =
|
||||
let doc = "the file to dump" in
|
||||
Arg.(required & pos 0 (some string) None & info [] ~doc)
|
||||
;;
|
||||
|
||||
let term = Term.(const dump $ file $ Common.with_log)
|
||||
|
||||
let cmd =
|
||||
let info =
|
||||
let doc = "print the content of an index file to stdout" in
|
||||
Cmd.info "dump" ~doc
|
||||
in
|
||||
Cmd.v info term
|
||||
;;
|
||||
end
|
||||
|
||||
let subcommands =
|
||||
let info =
|
||||
let doc = "An indexer for OCaml's artifacts" in
|
||||
Cmd.info "ocaml-index" ~doc
|
||||
in
|
||||
Cmd.group info ~default:Aggregate.term [ Aggregate.cmd; Dump.cmd ]
|
||||
;;
|
||||
|
||||
let () = exit (Cmd.eval subcommands)
|
||||
Loading…
Add table
Add a link
Reference in a new issue