dune/src/main.ml

46 lines
1.1 KiB
OCaml
Raw Normal View History

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