open! Dune_exe
open Import
module Persistent = Dune_util.Persistent

let doc = "Dump the contents of a file stored in Dune's persistent database."

let man =
  [ `S "DESCRIPTION"
  ; `P
      {|Dump the contents of a file stored in Dune's persistent database in a human readable format.|}
  ; `Blocks Common.help_secs
  ]
;;

let info = Cmd.info "dump" ~doc ~man

let term =
  let+ builder = Common.Builder.term
  and+ file =
    (* CR-someday Alizter: document this option *)
    Arg.(required & pos 0 (some Arg.path) None & Arg.info [] ~docv:"FILE" ~doc:None)
  in
  let _common, _config = Common.init builder in
  let (Persistent.T ((module D), data)) = Persistent.load_exn (Arg.Path.path file) in
  Console.print [ Dyn.pp (D.to_dyn data) ]
;;

let command = Cmd.v info term
