diff --git a/src/gen_rules.ml b/src/gen_rules.ml index 699013ce..3ee7cc49 100644 --- a/src/gen_rules.ml +++ b/src/gen_rules.ml @@ -726,6 +726,7 @@ Add it to your jbuild file to remove this warning. let () = SC.add_rules sctx (Js_of_ocaml_rules.setup_separate_compilation_rules sctx) let () = Odoc.setup_css_rule sctx + let () = Odoc.setup_toplevel_index_rule sctx (* +-----------------------------------------------------------------+ | META | diff --git a/src/odoc.ml b/src/odoc.ml index 6aa401c8..7e4ef035 100644 --- a/src/odoc.ml +++ b/src/odoc.ml @@ -112,6 +112,8 @@ let doc_dir ~context = Path.relative context.Context.build_dir "_doc" let css_file ~doc_dir = doc_dir ++ "odoc.css" +let toplevel_index ~doc_dir = doc_dir ++ "index.html" + let setup_library_rules sctx (lib : Library.t) ~dir ~modules ~requires ~(dep_graph:Ocamldep.dep_graph) = Option.iter lib.public ~f:(fun public -> @@ -164,6 +166,7 @@ let setup_library_rules sctx (lib : Library.t) ~dir ~modules ~requires in Alias.add_deps (SC.aliases sctx) (Alias.doc ~dir) (css_file ~doc_dir + :: toplevel_index ~doc_dir :: lib_index_html :: html_files)) @@ -175,4 +178,42 @@ let setup_css_rule sctx = ~dir:context.build_dir ~extra_targets:[css_file ~doc_dir] (get_odoc sctx) - [ A "css"; A "-o"; Path doc_dir ]); + [ A "css"; A "-o"; Path doc_dir ]) + +let sp = Printf.sprintf + +let setup_toplevel_index_rule sctx = + let packages = + String_map.fold ~f:(fun ~key ~data pkgs -> + let name = sp {|%s|} key key in + let pkg = match data.Package.version_from_opam_file with + | None -> name + | Some v -> sp {|%s %s|} name v + in + sp "
  • %s
  • " pkg :: pkgs + ) ~init:[] (SC.packages sctx) + |> List.rev + in + let packages = String.concat ~sep:"\n " packages in + let html = + sp {| + + + index + + + + + +
    +

    OCaml package documentation

    +
      + %s +
    + + +|} packages + in + let context = SC.context sctx in + let doc_dir = doc_dir ~context in + SC.add_rule sctx @@ Build.write_file (toplevel_index ~doc_dir) html diff --git a/src/odoc.mli b/src/odoc.mli index ec088f7a..cbd8082e 100644 --- a/src/odoc.mli +++ b/src/odoc.mli @@ -13,3 +13,5 @@ val setup_library_rules -> unit val setup_css_rule : Super_context.t -> unit + +val setup_toplevel_index_rule: Super_context.t -> unit