2016-11-13 12:25:45 +00:00
|
|
|
open Import
|
2016-10-30 19:07:53 +00:00
|
|
|
|
2016-11-13 12:25:45 +00:00
|
|
|
let internal argv =
|
|
|
|
match Array.to_list argv with
|
|
|
|
| [_; "findlib-packages"] ->
|
2016-11-13 12:40:31 +00:00
|
|
|
let pkgs = Findlib.all_packages () in
|
|
|
|
let max_len =
|
|
|
|
List.map pkgs ~f:String.length
|
|
|
|
|> List.fold_left ~init:0 ~f:max
|
|
|
|
in
|
|
|
|
List.iter pkgs ~f:(fun pkg ->
|
|
|
|
let ver =
|
|
|
|
match Findlib.query ~pkg ~preds:[] ~var:"version" with
|
|
|
|
| None -> "n/a"
|
|
|
|
| Some v -> v
|
|
|
|
in
|
|
|
|
Printf.printf "%-*s (version: %s)\n" max_len pkg ver)
|
2016-11-13 12:25:45 +00:00
|
|
|
| _ ->
|
|
|
|
()
|
|
|
|
|
2016-11-13 12:32:12 +00:00
|
|
|
let main () =
|
2016-11-13 12:25:45 +00:00
|
|
|
let argv = Sys.argv in
|
|
|
|
let argc = Array.length argv in
|
|
|
|
let compact () =
|
|
|
|
Array.append
|
|
|
|
[|sprintf "%s %s" argv.(0) argv.(1)|]
|
|
|
|
(Array.sub argv ~pos:2 ~len:(argc - 2))
|
|
|
|
in
|
|
|
|
if argc >= 2 then
|
|
|
|
match argv.(1) with
|
|
|
|
| "internal" -> internal (compact ())
|
|
|
|
| _ -> ()
|
2016-11-13 12:32:12 +00:00
|
|
|
|
|
|
|
let () =
|
|
|
|
try
|
|
|
|
main ()
|
|
|
|
with
|
|
|
|
| Loc.Error ({ start; stop }, msg) ->
|
|
|
|
let start_c = start.pos_cnum - start.pos_bol in
|
|
|
|
let stop_c = stop.pos_cnum - start.pos_bol in
|
|
|
|
Printf.eprintf
|
|
|
|
"File \"%s\", line %d, characters %d-%d:\n\
|
|
|
|
Error: %s\n%!"
|
|
|
|
start.pos_fname start.pos_lnum start_c stop_c msg
|
|
|
|
|