let gen_topic target_basename dline t =
Printf.printf " (rule   (with-stdout-to %s-%s.0 (echo
(rule   (targets %s-%s.1 %s-%s.err)   (deps using-built-opam)   (action (progn (with-stderr-to %s-%s.err   (with-stdout-to %s-%s.1 (run %s %s --help=groff)))   (diff %s-%s.err %%{dep:%s-%s.0})))   (package opam)) "
target_basename t target_basename t target_basename t target_basename t target_basename t dline t target_basename t target_basename t

let () =
let cmd,args = match Array.to_list Sys.argv with
| _::cmd::args -> cmd, args
| [] | [_] -> invalid_arg "Missing command argument"
in
let cline = String.concat " " (cmd :: args) ˆ " help topics" in
let topics =
let ic = Unix.open_process_in cline in
set_binary_mode_in ic false;
let rec aux () =
match input_line ic with
| "" -> aux ()
| s -> s :: aux ()
| exception _ -> close_in ic; []
in
aux ()
in
let target_basename = String.concat "-" ("opam" :: args) in
let dline = String.concat " " ("%{bin:opam}" :: args) in
print_string ";; Generated by dune_man0;
List.iter (gen_topic target_basename dline) topics;
Printf.printf " (install   (section man)   (package opam)   (files%s))0
(String.concat ""
(List.map (Printf.sprintf " %s-%s.1" target_basename) topics))