This commit is contained in:
swrup 2025-11-11 02:07:51 +01:00
parent aa2ff7b2f0
commit 2f3113f55d
11742 changed files with 1223940 additions and 0 deletions

View file

@ -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)