this repo has no description
1(** rdeps command: find reverse dependencies *)
2
3open Cmdliner
4
5let run profile_name profile_dir package =
6 match Common.load_profile ~profile_dir ~name:profile_name with
7 | Error (`Msg e) -> Printf.eprintf "Error: %s\n%!" e; 1
8 | Ok (profile, _paths) ->
9 let _git_packages, repos_with_shas, _opam_env =
10 Common.setup_solver profile.opam_repositories in
11 let pkg = OpamPackage.of_string package in
12 let results = Day11_solver_pool.Solver_pool.solve_many ~np:1
13 ~repos:repos_with_shas [ pkg ] in
14 match List.assoc_opt pkg results with
15 | Some (Error (diag, _examined)) ->
16 Printf.eprintf "Cannot solve %s: %s\n" package diag; 1
17 | None ->
18 Printf.eprintf "No result for %s\n" package; 1
19 | Some (Ok result) ->
20 let rdeps = Day11_solution.Rdeps.find
21 [ result.Day11_solution.Solve_result.build_deps ] pkg in
22 if OpamPackage.Set.is_empty rdeps then
23 Printf.printf "No reverse dependencies for %s\n" package
24 else begin
25 Printf.printf "Reverse dependencies of %s:\n" package;
26 OpamPackage.Set.iter (fun p ->
27 Printf.printf " %s\n" (OpamPackage.to_string p)
28 ) rdeps
29 end;
30 0
31
32let package_term =
33 Arg.(required & pos 0 (some string) None & info [] ~docv:"PACKAGE"
34 ~doc:"Package to find rdeps for")
35
36let cmd =
37 let info = Cmd.info "rdeps" ~doc:"Find reverse dependencies" in
38 let term = Term.(const run $ Common.profile_term $ Common.profile_dir_term
39 $ package_term) in
40 Cmd.v info term