bin/Builder-viz: Added dependencies visualization
This commit is contained in:
parent
dde9d5b2da
commit
95ef54fc82
1 changed files with 35 additions and 1 deletions
|
@ -6,6 +6,18 @@ open Rresult
|
||||||
(* open Lwt.Syntax
|
(* open Lwt.Syntax
|
||||||
* open Lwt_result.Infix *)
|
* open Lwt_result.Infix *)
|
||||||
|
|
||||||
|
let read_file file =
|
||||||
|
try
|
||||||
|
let fh = open_in file in
|
||||||
|
try
|
||||||
|
let content = really_input_string fh (in_channel_length fh) in
|
||||||
|
close_in_noerr fh ;
|
||||||
|
content
|
||||||
|
with _ ->
|
||||||
|
close_in_noerr fh;
|
||||||
|
invalid_arg ("Error reading file: " ^ file)
|
||||||
|
with _ -> invalid_arg ("Error opening file " ^ file)
|
||||||
|
|
||||||
let print_treemap_html elf_path elf_size =
|
let print_treemap_html elf_path elf_size =
|
||||||
let open Modulectomy in
|
let open Modulectomy in
|
||||||
let infos =
|
let infos =
|
||||||
|
@ -50,6 +62,14 @@ let print_treemap_html elf_path elf_size =
|
||||||
(* |> Treemap.svg
|
(* |> Treemap.svg
|
||||||
* |> Fmt.to_to_string (Tyxml.Svg.pp ()) *)
|
* |> Fmt.to_to_string (Tyxml.Svg.pp ()) *)
|
||||||
|
|
||||||
|
let print_dependencies_html file =
|
||||||
|
let open Opam_graph in
|
||||||
|
let switch = read_file file in
|
||||||
|
let data = OpamFile.SwitchExport.read_from_string switch in
|
||||||
|
let transitive = false in
|
||||||
|
let graph = Ui.dependencies ~transitive data in
|
||||||
|
let html = Render.Html.of_assoc graph in
|
||||||
|
Format.printf "%a" Render.Html.pp html
|
||||||
|
|
||||||
module Cmd = struct
|
module Cmd = struct
|
||||||
|
|
||||||
|
@ -71,6 +91,14 @@ module Cmd = struct
|
||||||
info ~doc ~docv:"STRIPPED_ELF_SIZE" []
|
info ~doc ~docv:"STRIPPED_ELF_SIZE" []
|
||||||
)
|
)
|
||||||
|
|
||||||
|
let opam_switch_path =
|
||||||
|
let doc = "The Opam-switch export file of the package to be analyzed" in
|
||||||
|
Cmdliner.Arg.(
|
||||||
|
required &
|
||||||
|
pos 0 (some file) None &
|
||||||
|
info ~doc ~docv:"SWITCH_EXPORT_PATH" []
|
||||||
|
)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
module Aux = struct
|
module Aux = struct
|
||||||
|
@ -89,6 +117,11 @@ module Cmd = struct
|
||||||
Cmdliner.Term.(pure print_treemap_html $ Arg.elf_path $ Arg.elf_size),
|
Cmdliner.Term.(pure print_treemap_html $ Arg.elf_path $ Arg.elf_size),
|
||||||
Cmdliner.Term.info ~doc "treemap"
|
Cmdliner.Term.info ~doc "treemap"
|
||||||
|
|
||||||
|
let dependencies =
|
||||||
|
let doc = "Dump opam dependencies SVG and CSS wrapped in HTML" in
|
||||||
|
Cmdliner.Term.(pure print_dependencies_html $ Arg.opam_switch_path),
|
||||||
|
Cmdliner.Term.info ~doc "dependencies"
|
||||||
|
|
||||||
let help =
|
let help =
|
||||||
let topic =
|
let topic =
|
||||||
let doc = "Command to get help on" in
|
let doc = "Command to get help on" in
|
||||||
|
@ -108,6 +141,7 @@ end
|
||||||
let () =
|
let () =
|
||||||
Cmdliner.Term.eval_choice Cmd.default [
|
Cmdliner.Term.eval_choice Cmd.default [
|
||||||
Cmd.help;
|
Cmd.help;
|
||||||
Cmd.treemap
|
Cmd.treemap;
|
||||||
|
Cmd.dependencies;
|
||||||
]
|
]
|
||||||
|> Cmdliner.Term.exit
|
|> Cmdliner.Term.exit
|
||||||
|
|
Loading…
Reference in a new issue