mte/unikernel/duniverse/dune_/bin/describe/describe_opam_files.ml
2025-11-11 02:07:51 +01:00

38 lines
1.2 KiB
OCaml

open Import
let term =
let+ builder = Common.Builder.term
and+ format = Describe_format.arg
and+ _ = Describe_lang_compat.arg in
let common, config = Common.init builder in
Scheduler.go_with_rpc_server ~common ~config
@@ fun () ->
build_exn
@@ fun () ->
let open Memo.O in
let+ project = Source_tree.root () >>| Source_tree.Dir.project in
let packages = Dune_project.packages project |> Package.Name.Map.values in
let opam_file_to_dyn pkg =
let opam_file = Path.source (Package.opam_file pkg) in
let contents =
if Dune_project.generate_opam_files project
then (
let template_file = Dune_rules.Opam_create.template_file opam_file in
let template =
if Path.exists template_file
then Some (template_file, Io.read_file template_file)
else None
in
Dune_rules.Opam_create.generate project pkg ~template)
else Io.read_file opam_file
in
Dyn.Tuple [ String (Path.to_string opam_file); String contents ]
in
packages |> Dyn.list opam_file_to_dyn |> Describe_format.print_dyn format
;;
let command =
let doc = "Print information about the opam files that have been discovered." in
let info = Cmd.info ~doc "opam-files" in
Cmd.v info term
;;