39 lines
1.2 KiB
OCaml
39 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
|
||
|
|
;;
|