Last active
July 5, 2023 17:56
-
-
Save Julow/110dc94308d6078225e0665e3eccd433 to your computer and use it in GitHub Desktop.
Which OCamlformat options are most used
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pkgs/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; | |
#use "topfind" | |
;; | |
#require "unix" | |
;; | |
#require "astring" | |
open Astring | |
let read_file path = | |
let inp = open_in path in | |
let do_read () = | |
let lines = ref [] in | |
(try | |
while true do | |
lines := input_line inp :: !lines | |
done | |
with End_of_file -> ()); | |
List.rev !lines | |
in | |
Fun.protect ~finally:(fun () -> close_in inp) do_read | |
let parse_opt line = | |
let line = | |
match String.cut ~sep:"#" line with Some (l', _) -> l' | None -> line | |
in | |
let opt, value = | |
match String.cut ~sep:"=" line with | |
| Some (opt, value) -> (String.trim opt, Some (String.trim value)) | |
| None -> (String.trim line, None) | |
in | |
if opt = "" then None else Some (opt, value) | |
let parse_ocamlformat_file path = read_file path |> List.filter_map parse_opt | |
(** Recursively scan a directory, calls [f acc path] on every files. *) | |
let rec scan_dir f acc path = | |
(* Don't recurse into symlinks. *) | |
match Unix.lstat path with | |
| { st_kind = S_REG; _ } -> f acc path | |
| { st_kind = S_DIR; _ } -> | |
let cnames = Sys.readdir path in | |
Array.fold_left | |
(fun acc cname -> scan_dir f acc (Filename.concat path cname)) | |
acc cnames | |
| _ -> acc | |
let ocamlformat_files = | |
let root = "pkgs" in | |
Sys.readdir root | |
|> Array.fold_left | |
(fun acc name -> | |
let path = Filename.concat root name in | |
(* For each project, scan for [.ocamlformat] files. Keep the union of | |
the options present to avoid over-representing some projects. *) | |
let files = | |
scan_dir | |
(fun acc path -> | |
if Filename.basename path = ".ocamlformat" then | |
parse_ocamlformat_file path :: acc | |
else acc) | |
[] path | |
in | |
if files = [] then acc | |
else (name, List.sort_uniq compare (List.concat files)) :: acc) | |
[] | |
let () = | |
Format.printf "%d projects@\n" (List.length ocamlformat_files); | |
(* Count usage for each pair [option, value]. *) | |
let tbl = Hashtbl.create 0 in | |
List.iter | |
(fun (project, options) -> | |
List.iter | |
(fun opt -> | |
let p', n' = | |
match Hashtbl.find_opt tbl opt with Some v -> v | None -> ([], 0) | |
in | |
Hashtbl.replace tbl opt (project :: p', n' + 1)) | |
options) | |
ocamlformat_files; | |
(* Print. *) | |
Hashtbl.to_seq tbl |> List.of_seq | |
|> List.sort (fun (_, (_, a)) (_, (_, b)) -> b - a) | |
|> List.iter (fun ((opt, value), (projects, count)) -> | |
let open Format in | |
let pp_value ppf v = fprintf ppf " = %s" v in | |
let pp_projects ppf = function | |
| [] -> () | |
| _ :: _ as projects -> | |
let pp_sep ppf () = fprintf ppf ", " in | |
fprintf ppf " (%a)" | |
(pp_print_list ~pp_sep pp_print_string) | |
projects | |
in | |
(* For options with a count < 10, show the list of projects using it. *) | |
printf "%4d %s%a%a@\n" count opt (pp_print_option pp_value) value | |
pp_projects | |
(if count < 10 then projects else [])) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
94 projects | |
36 parse-docstrings = true | |
34 break-infix = fit-or-vertical | |
31 profile = conventional | |
19 cases-exp-indent = 2 | |
19 module-item-spacing = compact | |
17 type-decl = sparse | |
17 version = 0.21.0 | |
16 doc-comments = before | |
16 indicate-multiline-delimiters = no | |
15 sequence-style = terminator | |
15 version = 0.24.1 | |
14 exp-grouping = preserve | |
14 dock-collection-brackets = false | |
14 wrap-comments = true | |
13 if-then-else = keyword-first | |
13 break-separators = before | |
13 field-space = loose | |
12 let-binding-spacing = compact | |
12 break-separators = after | |
11 version = 0.19.0 | |
10 let-and = sparse | |
10 break-fun-decl = fit-or-vertical | |
10 parens-tuple = multi-line-only | |
10 break-infix-before-func = false | |
10 space-around-lists = false | |
9 profile = default (ppx_system.1.0, dream-encoding.0.2.0, gitlab.0.1.7, ppx_parser.0.1.1, crunch.3.3.1, dream-cli.0.2.0, extunix.0.4.1, ppx_interact.0.1.0, dream-accept.0.1.0) | |
9 sequence-style = separator (digestif.1.1.4, json-data-encoding.1.0.0, dream.1.0.0~alpha4, piaf.0.1.0, colombe.0.8.0, checkseum.0.5.1, lun.0.0.1, multipart_form.0.5.0, base64.3.5.1) | |
9 module-item-spacing = sparse (ocamlformat-lib.0.25.1, json-data-encoding.1.0.0, js_of_ocaml.5.3.0, drom.0.8.0, js_of_ocaml-ocamlbuild.5.0, ez_opam_file.0.1.0, dune.3.8.2, csexp.1.5.2, ez_cmdliner.0.4.3) | |
9 wrap-comments = false (ke.0.6, ppx_deriving_rpc.9.0.0, rpclib.9.0.0, drom.0.8.0, prettym.0.0.3, ez_opam_file.0.1.0, ppx_cstubs.0.7.0, md2mld.0.7.0, ez_cmdliner.0.4.3) | |
8 break-sequences = true (spawn.v0.15.1, gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ocaml-compiler-libs.v0.12.4, ez_opam_file.0.1.0, ppx_cstubs.0.7.0, ez_cmdliner.0.4.3) | |
8 parens-tuple = always (ke.0.6, json-data-encoding.1.0.0, drom.0.8.0, prettym.0.0.3, ez_opam_file.0.1.0, pecu.0.6, popper.0.1.1, ez_cmdliner.0.4.3) | |
8 break-before-in = auto (digestif.1.1.4, decompress.1.5.2, dream.1.0.0~alpha4, piaf.0.1.0, colombe.0.8.0, checkseum.0.5.1, multipart_form.0.5.0, base64.3.5.1) | |
8 nested-match = align (digestif.1.1.4, dream.1.0.0~alpha4, piaf.0.1.0, colombe.0.8.0, checkseum.0.5.1, multipart_form.0.5.0, base64.3.5.1, metrics.0.4.1) | |
8 margin = 80 (ocamlformat-lib.0.25.1, json-data-encoding.1.0.0, drom.0.8.0, ez_opam_file.0.1.0, popper.0.1.1, ppx_cstubs.0.7.0, containers.3.12, ez_cmdliner.0.4.3) | |
7 wrap-fun-args = false (ppx_deriving_scad.1.0.0, json-data-encoding.1.0.0, omd.2.0.0~alpha3, gluten.0.4.1, js_of_ocaml.5.3.0, dream.1.0.0~alpha5, js_of_ocaml-ocamlbuild.5.0) | |
7 parens-tuple-patterns = multi-line-only (dream.1.0.0~alpha4, piaf.0.1.0, drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
7 profile = janestreet (ppx_deriving_rpc.9.0.0, ppx_deriving_cad.0.2.0, ppx_string_interpolation.1.0.1, rpclib.9.0.0, routes.2.0.0, popper.0.1.1, md2mld.0.7.0) | |
7 if-then-else = fit-or-vertical (dream.1.0.0~alpha4, piaf.0.1.0, ppx_pyformat.0.1.2, ppx_string_interpolation.1.0.1, ppx_make.0.3.2, popper.0.1.1, ppx_subliner.0.2.0) | |
6 disable = true (odoc.2.2.0, eqaf.0.9, dream.1.0.0~alpha4, mdx.2.3.0, cstruct.6.2.0, unstrctrd.0.3) | |
6 space-around-lists = true (ppx_deriving_scad.1.0.0, gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
6 ocaml-version = 4.08.0 (gitlab.0.1.7, ppx_irmin.3.7.2, mdx.2.3.0, js_of_ocaml.5.3.0, dune.3.8.2, csexp.1.5.2) | |
6 match-indent-nested = always (sedlex.3.1, xml-light.2.5, duppy.0.9.2, dtools.0.4.4, popper.0.1.1, mm.0.8.3) | |
6 break-collection-expressions = fit-or-vertical (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, popper.0.1.1, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
6 break-cases = fit (ocamlformat-lib.0.25.1, ppx_rapper.3.1.0, ppx_import.1.10.0, eliom.10.0.0, ppx_cstubs.0.7.0, ocsipersist.1.1.0) | |
6 space-around-variants = true (ppx_deriving_scad.1.0.0, gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
6 space-around-arrays = true (ppx_deriving_scad.1.0.0, gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
6 parens-ite = false (dream.1.0.0~alpha4, piaf.0.1.0, drom.0.8.0, ez_opam_file.0.1.0, popper.0.1.1, ez_cmdliner.0.4.3) | |
6 space-around-records = true (ppx_deriving_scad.1.0.0, gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
6 if-then-else = k-r (spawn.v0.15.1, drom.0.8.0, ocaml-compiler-libs.v0.12.4, ez_opam_file.0.1.0, containers.3.12, ez_cmdliner.0.4.3) | |
6 ocp-indent-compat = true (dream.1.0.0~alpha4, piaf.0.1.0, gluten.0.4.1, dream.1.0.0~alpha5, eliom.10.0.0, ocsipersist.1.1.0) | |
5 sequence-blank-line = preserve-one (gluten.0.4.1, drom.0.8.0, dream.1.0.0~alpha5, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
5 break-fun-sig = wrap (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
5 break-infix-before-func (ppx_pyformat.0.1.2, js_of_ocaml.5.3.0, js_of_ocaml-ocamlbuild.5.0, ppx_make.0.3.2, ppx_subliner.0.2.0) | |
5 match-indent = 2 (sedlex.3.1, xml-light.2.5, duppy.0.9.2, dtools.0.4.4, mm.0.8.3) | |
5 infix-precedence = indent (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
5 parens-ite (sedlex.3.1, xml-light.2.5, duppy.0.9.2, dtools.0.4.4, mm.0.8.3) | |
5 version = 0.25.1 (ipaddr.5.5.0, dockerfile.8.2.1, multipart_form.0.5.0, js_of_ocaml.5.3.0, md2mld.0.7.0) | |
5 break-cases = all (spawn.v0.15.1, drom.0.8.0, ocaml-compiler-libs.v0.12.4, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
5 version = 0.23.0 (ppx_system.1.0, colombe.0.8.0, crunch.3.3.1, conduit.6.2.0, ca-certs.0.2.3) | |
5 indicate-nested-or-patterns = unsafe-no (spawn.v0.15.1, drom.0.8.0, ocaml-compiler-libs.v0.12.4, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
5 break-fun-decl = wrap (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
5 break-struct = force (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
5 break-infix = wrap (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
5 type-decl = compact (lun.0.0.1, ppx_string_interpolation.1.0.1, eliom.10.0.0, containers.3.12, ocsipersist.1.1.0) | |
5 break-fun-sig = fit-or-vertical (ppx_deriving_scad.1.0.0, omd.2.0.0~alpha3, ppx_pyformat.0.1.2, ppx_make.0.3.2, ppx_subliner.0.2.0) | |
5 break-cases = fit-or-vertical (js_of_ocaml.5.3.0, js_of_ocaml-ocamlbuild.5.0, popper.0.1.1, dune.3.8.2, csexp.1.5.2) | |
5 infix-precedence = parens (dream.1.0.0~alpha4, piaf.0.1.0, gluten.0.4.1, dream.1.0.0~alpha5, ppx_cstubs.0.7.0) | |
5 single-case = compact (drom.0.8.0, ez_opam_file.0.1.0, eliom.10.0.0, ez_cmdliner.0.4.3, ocsipersist.1.1.0) | |
4 space-around-arrays = false (json-data-encoding.1.0.0, decompress.1.5.2, eliom.10.0.0, ocsipersist.1.1.0) | |
4 indicate-multiline-delimiters = space (ppx_deriving_cad.0.2.0, drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
4 break-collection-expressions = wrap (digestif.1.1.4, ke.0.6, decompress.1.5.2, prettym.0.0.3) | |
4 break-struct = natural (ke.0.6, decompress.1.5.2, prettym.0.0.3, pecu.0.6) | |
4 space-around-records = false (json-data-encoding.1.0.0, decompress.1.5.2, eliom.10.0.0, ocsipersist.1.1.0) | |
4 sequence-blank-line = compact (dream.1.0.0~alpha4, piaf.0.1.0, eliom.10.0.0, ocsipersist.1.1.0) | |
4 dock-collection-brackets = true (digestif.1.1.4, json-data-encoding.1.0.0, lun.0.0.1, ppx_interact.0.1.0) | |
4 break-before-in = fit-or-vertical (drom.0.8.0, ez_opam_file.0.1.0, popper.0.1.1, ez_cmdliner.0.4.3) | |
4 leading-nested-match-parens = true (gluten.0.4.1, dream.1.0.0~alpha5, containers.3.12, ppx_interact.0.1.0) | |
3 doc-comments-padding = 2 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 disambiguate-non-breaking-match = false (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 space-around-records (spawn.v0.15.1, textmate-language.0.3.4, ocaml-compiler-libs.v0.12.4) | |
3 version = 0.22.4 (odoc-parser.2.0.0, decompress.1.5.2, extunix.0.4.1) | |
3 assignment-operator = end-line (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 indent-after-in = 0 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 field-space = tight-decl (ppx_rapper.3.1.0, lun.0.0.1, containers.3.12) | |
3 version = 0.15.0 (either.1.0.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 space-around-arrays (spawn.v0.15.1, textmate-language.0.3.4, ocaml-compiler-libs.v0.12.4) | |
3 match-indent = 0 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 ocp-indent-compat = false (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 break-string-literals = auto (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 doc-comments-tag-only = default (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 type-decl-indent = 2 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 cases-matching-exp-indent = normal (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 wrap-fun-args = true (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 match-indent-nested = never (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 version = 0.20.1 (river.0.2, ppx_import.1.10.0, cstruct.6.2.0) | |
3 margin = 90 (ppx_deriving_scad.1.0.0, js_of_ocaml.5.3.0, js_of_ocaml-ocamlbuild.5.0) | |
3 break-cases = nested (dream.1.0.0~alpha4, piaf.0.1.0, ppx_string_interpolation.1.0.1) | |
3 space-around-variants = false (json-data-encoding.1.0.0, eliom.10.0.0, ocsipersist.1.1.0) | |
3 let-module = compact (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 break-sequences = false (decompress.1.5.2, eliom.10.0.0, ocsipersist.1.1.0) | |
3 stritem-extension-indent = 0 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 let-binding-indent = 2 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 profile = ocamlformat (ocamlformat-lib.0.25.1, ppx_deriving_scad.1.0.0, ppx_import.1.10.0) | |
3 disable (ocamlformat-lib.0.25.1, mdx.2.3.0, js_of_ocaml.5.3.0) | |
3 leading-nested-match-parens = false (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 function-indent = 2 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 extension-indent = 2 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 max-indent = 68 (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 function-indent-nested = never (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
3 break-string-literals = never (eliom.10.0.0, ppx_cstubs.0.7.0, ocsipersist.1.1.0) | |
3 space-around-lists (spawn.v0.15.1, textmate-language.0.3.4, ocaml-compiler-libs.v0.12.4) | |
3 break-fun-decl = smart (decompress.1.5.2, dream.1.0.0~alpha4, piaf.0.1.0) | |
3 let-binding-spacing = sparse (ppx_deriving_rpc.9.0.0, rpclib.9.0.0, md2mld.0.7.0) | |
3 nested-match = wrap (drom.0.8.0, ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
2 let-module = sparse (gluten.0.4.1, dream.1.0.0~alpha5) | |
2 version = 0.18.0 (conduit.4.0.2, pecu.0.6) | |
2 single-case = sparse (gluten.0.4.1, dream.1.0.0~alpha5) | |
2 break-cases = toplevel (textmate-language.0.3.4, containers.3.12) | |
2 cases-matching-exp-indent = compact (eliom.10.0.0, ocsipersist.1.1.0) | |
2 parse-docstrings (alcotest.1.7.0, ppx_repr.0.6.0) | |
2 align-constructors-decl = false (ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
2 ocaml-version = 4.08 (dockerfile.8.2.1, crunch.3.3.1) | |
2 parse-docstrings = false (piaf.0.1.0, multipart_form.0.5.0) | |
2 align-cases = false (ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
2 doc-comments = after-when-possible (eliom.10.0.0, ocsipersist.1.1.0) | |
2 let-and = compact (eliom.10.0.0, ocsipersist.1.1.0) | |
2 align-variants-decl = false (ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
2 profile = sparse (dream.1.0.0~alpha4, piaf.0.1.0) | |
2 version = 0.20.0 (ppxlib.0.27.0, cohttp.5.1.0) | |
2 ocaml-version = 4.13.0 (ocamlformat-lib.0.25.1, ppx_parser.0.1.1) | |
2 version = 0.16.0 (piaf.0.1.0, base64.3.5.1) | |
2 let-open = preserve (ez_opam_file.0.1.0, ez_cmdliner.0.4.3) | |
1 align-cases = true (ppx_deriving_scad.1.0.0) | |
1 parens-ite = true (containers.3.12) | |
1 max-indent = 2 (popper.0.1.1) | |
1 field-space = tight (decompress.1.5.2) | |
1 max-iters = 2 (ocamlformat-lib.0.25.1) | |
1 assignment-operator = begin-line (ppx_deriving_scad.1.0.0) | |
1 sequence-style = before (decompress.1.5.2) | |
1 margin = 79 (textmate-language.0.3.4) | |
1 margin = 10 (ocamlformat-lib.0.25.1) | |
1 ocaml-version = 4.10.0 (json-data-encoding.1.0.0) | |
1 profile = compact (msgpck.1.7) | |
1 module-item-spacing = preserve (odoc.2.2.0) | |
1 margin = 77 (ocamlformat-lib.0.25.1) | |
1 ocaml-version = 4.05.0 (alcotest.1.7.0) | |
1 ocaml-version = 5.0.0 (textmate-language.0.3.4) | |
1 dock-collection-brackets (textmate-language.0.3.4) | |
1 quiet = true (containers.3.12) | |
1 line-endings = lf (ocamlformat-lib.0.25.1) | |
1 this_is_an_error = true (ocamlformat-lib.0.25.1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ppx_deriving_rpc;9.0.0;git://github.com/mirage/ocaml-rpc | |
ppx_units;1.0.0;git://github.com/SGrondin/ppx_units | |
ppx_deriving_encoding;0.3.0;git://gitlab.com/o-labs/ppx_deriving_encoding | |
ppx_deriving_jsoo;0.3;git://gitlab.com/o-labs/ppx_deriving_jsoo | |
asetmap;0.8.1;git+http://erratique.ch/repos/asetmap.git | |
astring;0.8.5;git+http://erratique.ch/repos/astring.git | |
hmap;0.8.1;git+http://erratique.ch/repos/hmap.git | |
ctypes;0.20.2;git+http://github.com/yallop/ocaml-ctypes.git | |
bos;0.2.1;git+https://erratique.ch/repos/bos.git | |
brr;0.0.5;git+https://erratique.ch/repos/brr.git | |
cmdliner;1.2.0;git+https://erratique.ch/repos/cmdliner.git | |
fmt;0.9.0;git+https://erratique.ch/repos/fmt.git | |
fpath;0.7.3;git+https://erratique.ch/repos/fpath.git | |
jsonm;1.0.2;git+https://erratique.ch/repos/jsonm.git | |
logs;0.7.0;git+https://erratique.ch/repos/logs.git | |
mtime;2.0.0;git+https://erratique.ch/repos/mtime.git | |
note;0.0.2;git+https://erratique.ch/repos/note.git | |
ptime;1.1.0;git+https://erratique.ch/repos/ptime.git | |
react;1.2.2;git+https://erratique.ch/repos/react.git | |
rresult;0.7.0;git+https://erratique.ch/repos/rresult.git | |
topkg;1.0.7;git+https://erratique.ch/repos/topkg.git | |
uucp;15.0.0;git+https://erratique.ch/repos/uucp.git | |
uunf;15.0.0;git+https://erratique.ch/repos/uunf.git | |
uuseg;15.0.0;git+https://erratique.ch/repos/uuseg.git | |
uutf;1.0.3;git+https://erratique.ch/repos/uutf.git | |
xmlm;1.4.0;git+https://erratique.ch/repos/xmlm.git | |
dream;1.0.0~alpha4;git+https://github.com/aantron/dream.git | |
hyper;1.0.0~alpha1;git+https://github.com/aantron/hyper.git | |
lambdasoup;1.0.0;git+https://github.com/aantron/lambdasoup.git | |
luv;0.5.12;git+https://github.com/aantron/luv.git | |
markup;1.0.3;git+https://github.com/aantron/markup.ml.git | |
pbkdf;1.2.0;git+https://github.com/abeaumont/ocaml-pbkdf.git | |
atd;2.12.0;git+https://github.com/ahrefs/atd.git | |
ppx_counters;0.1;git+https://github.com/ahrefs/ppx_counters.git | |
oniguruma;0.1.2;git+https://github.com/alan-j-hu/ocaml-oniguruma.git | |
textmate-language;0.3.4;git+https://github.com/alan-j-hu/ocaml-textmate-language.git | |
ppx_deriving_protocol;0.8.1;git+https://github.com/andersfugmann/ppx_protocol_conv | |
graphql;0.14.0;git+https://github.com/andreas/ocaml-graphql-server.git | |
stdint;0.7.2;git+https://github.com/andrenth/ocaml-stdint.git | |
gluten;0.4.1;git+https://github.com/anmonteiro/gluten.git | |
piaf;0.1.0;git+https://github.com/anmonteiro/piaf.git | |
routes;2.0.0;git+https://github.com/anuragsoni/routes.git | |
yaml;3.1.0;git+https://github.com/avsm/ocaml-yaml.git | |
bheap;2.0.0;git+https://github.com/backtracking/bheap.git | |
ocamlgraph;2.0.0;git+https://github.com/backtracking/ocamlgraph.git | |
ppx_catch;0.1.0;git+https://github.com/bensmrs/ppx_catch | |
ppx_map;0.1.0;git+https://github.com/bensmrs/ppx_map.git | |
ppx_string_interpolation;1.0.1;git+https://github.com/bloomberg/ppx_string_interpolation.git | |
ppx_make;0.3.2;git+https://github.com/bn-d/ppx_make.git | |
ppx_pyformat;0.1.2;git+https://github.com/bn-d/ppx_pyformat.git | |
ppx_subliner;0.2.0;git+https://github.com/bn-d/ppx_subliner.git | |
ppx_monoid;0.3.3;git+https://github.com/bobatkey/ppx-monoid.git | |
capnp;3.5.0;git+https://github.com/capnproto/capnp-ocaml.git | |
conf-capnproto;2;git+https://github.com/capnproto/capnproto.git | |
gen;1.1;git+https://github.com/c-cube/gen.git | |
containers;3.12;git+https://github.com/c-cube/ocaml-containers.git | |
qcheck;0.21.1;git+https://github.com/c-cube/qcheck.git | |
ANSITerminal;0.8.5;git+https://github.com/Chris00/ANSITerminal.git | |
csv;2.4;git+https://github.com/Chris00/ocaml-csv.git | |
ppx_factory;0.2.0;git+https://github.com/cryptosense/ppx_factory.git | |
syndic;1.6.1;git+https://github.com/Cumulus/Syndic.git | |
pgocaml;4.3.0;git+https://github.com/darioteixeira/pgocaml.git | |
ppx_interact;0.1.0;git+https://github.com/dariusf/ppx_interact.git | |
timedesc;1.2.0;git+https://github.com/daypack-dev/timere.git | |
emile;1.1;git+https://github.com/dinosaure/emile.git | |
multipart_form;0.5.0;git+https://github.com/dinosaure/multipart_form.git | |
bigarray-overlap;0.2.1;git+https://github.com/dinosaure/overlap.git | |
prettym;0.0.3;git+https://github.com/dinosaure/prettym.git | |
unstrctrd;0.3;git+https://github.com/dinosaure/unstrctrd.git | |
node_of_ocaml;1.0.0;git+https://github.com/emilienlemaire/node_of_ocaml.git | |
ppx_cstubs;0.7.0;git+https://github.com/fdopen/ppx_cstubs.git | |
stdint-literals;1.0;git+https://github.com/Firobe/ocaml-stdint-literals.git | |
ppx_gen_rec;2.0.0;git+https://github.com/flowtype/ocaml-ppx_gen_rec.git | |
ppx_deriving_scad;1.0.0;git+https://github.com/geoffder/ppx_deriving_scad.git | |
ounit2;2.2.7;git+https://github.com/gildor478/ounit.git | |
ppx_ts;0.1.6;git+https://github.com/green-labs/ppx_ts.git | |
domain-name;0.4.0;git+https://github.com/hannesm/domain-name.git | |
duration;0.2.1;git+https://github.com/hannesm/duration.git | |
gmap;0.3.0;git+https://github.com/hannesm/gmap.git | |
hkdf;1.0.4;git+https://github.com/hannesm/ocaml-hkdf.git | |
ppx_defer;0.5.0;git+https://github.com/hcarty/ppx_defer.git | |
angstrom;0.15.0;git+https://github.com/inhabitedtype/angstrom.git | |
bigstringaf;0.9.1;git+https://github.com/inhabitedtype/bigstringaf.git | |
faraday;0.8.2;git+https://github.com/inhabitedtype/faraday.git | |
session;0.5.0;git+https://github.com/inhabitedtype/ocaml-session.git | |
ppx_mysql;1.1.3;git+https://github.com/issuu/ppx_mysql.git | |
user-agent-parser;0.2.0;git+https://github.com/issuu/uap-ocaml.git | |
accessor;v0.16.0;git+https://github.com/janestreet/accessor.git | |
async;v0.16.0;git+https://github.com/janestreet/async.git | |
async_kernel;v0.16.0;git+https://github.com/janestreet/async_kernel.git | |
async_rpc_kernel;v0.16.0;git+https://github.com/janestreet/async_rpc_kernel.git | |
async_unix;v0.16.0;git+https://github.com/janestreet/async_unix.git | |
base_bigstring;v0.16.0;git+https://github.com/janestreet/base_bigstring.git | |
base;v0.16.1;git+https://github.com/janestreet/base.git | |
base_quickcheck;v0.16.0;git+https://github.com/janestreet/base_quickcheck.git | |
bin_prot;v0.16.0;git+https://github.com/janestreet/bin_prot.git | |
core;v0.16.0;git+https://github.com/janestreet/core.git | |
core_kernel;v0.16.0;git+https://github.com/janestreet/core_kernel.git | |
core_unix;v0.16.0;git+https://github.com/janestreet/core_unix.git | |
csvfields;v0.16.0;git+https://github.com/janestreet/csvfields.git | |
dedent;v0.16.0;git+https://github.com/janestreet/dedent.git | |
expect_test_helpers_core;v0.16.0;git+https://github.com/janestreet/expect_test_helpers_core.git | |
fieldslib;v0.16.0;git+https://github.com/janestreet/fieldslib.git | |
higher_kinded;v0.16.0;git+https://github.com/janestreet/higher_kinded.git | |
int_repr;v0.16.0;git+https://github.com/janestreet/int_repr.git | |
jane-street-headers;v0.16.0;git+https://github.com/janestreet/jane-street-headers.git | |
js_of_ocaml_patches;v0.16.0;git+https://github.com/janestreet/js_of_ocaml_patches.git | |
jsonaf;v0.16.0;git+https://github.com/janestreet/jsonaf.git | |
jst-config;v0.16.0;git+https://github.com/janestreet/jst-config.git | |
ocaml-compiler-libs;v0.12.4;git+https://github.com/janestreet/ocaml-compiler-libs.git | |
ocaml_intrinsics;v0.16.0;git+https://github.com/janestreet/ocaml_intrinsics.git | |
parsexp;v0.16.0;git+https://github.com/janestreet/parsexp.git | |
ppx_accessor;v0.16.0;git+https://github.com/janestreet/ppx_accessor.git | |
ppx_assert;v0.16.0;git+https://github.com/janestreet/ppx_assert.git | |
ppx_base;v0.16.0;git+https://github.com/janestreet/ppx_base.git | |
ppx_bench;v0.16.0;git+https://github.com/janestreet/ppx_bench.git | |
ppx_bin_prot;v0.16.0;git+https://github.com/janestreet/ppx_bin_prot.git | |
ppx_cold;v0.16.0;git+https://github.com/janestreet/ppx_cold.git | |
ppx_compare;v0.16.0;git+https://github.com/janestreet/ppx_compare.git | |
ppx_conv_func;v0.16.0;git+https://github.com/janestreet/ppx_conv_func.git | |
ppx_css;v0.16.0;git+https://github.com/janestreet/ppx_css.git | |
ppx_csv_conv;v0.16.0;git+https://github.com/janestreet/ppx_csv_conv.git | |
ppx_custom_printf;v0.16.0;git+https://github.com/janestreet/ppx_custom_printf.git | |
ppx_demo;v0.16.0;git+https://github.com/janestreet/ppx_demo.git | |
ppx_derive_at_runtime;v0.16.0;git+https://github.com/janestreet/ppx_derive_at_runtime.git | |
ppx_disable_unused_warnings;v0.16.0;git+https://github.com/janestreet/ppx_disable_unused_warnings. | |
ppx_enumerate;v0.16.0;git+https://github.com/janestreet/ppx_enumerate.git | |
ppx_expect;v0.16.0;git+https://github.com/janestreet/ppx_expect.git | |
ppx_fields_conv;v0.16.0;git+https://github.com/janestreet/ppx_fields_conv.git | |
ppx_fixed_literal;v0.16.0;git+https://github.com/janestreet/ppx_fixed_literal.git | |
ppx_globalize;v0.16.0;git+https://github.com/janestreet/ppx_globalize.git | |
ppx_hash;v0.16.0;git+https://github.com/janestreet/ppx_hash.git | |
ppx_here;v0.16.0;git+https://github.com/janestreet/ppx_here.git | |
ppx_ignore_instrumentation;v0.16.0;git+https://github.com/janestreet/ppx_ignore_instrumentation.g | |
ppx_inline_test;v0.16.0;git+https://github.com/janestreet/ppx_inline_test.git | |
ppx_jane;v0.16.0;git+https://github.com/janestreet/ppx_jane.git | |
ppx_jsonaf_conv;v0.16.0;git+https://github.com/janestreet/ppx_jsonaf_conv.git | |
ppx_js_style;v0.16.0;git+https://github.com/janestreet/ppx_js_style.git | |
ppx_let;v0.16.0;git+https://github.com/janestreet/ppx_let.git | |
ppx_log;v0.16.0;git+https://github.com/janestreet/ppx_log.git | |
ppx_module_timer;v0.16.0;git+https://github.com/janestreet/ppx_module_timer.git | |
ppx_optcomp;v0.16.0;git+https://github.com/janestreet/ppx_optcomp.git | |
ppx_optional;v0.16.0;git+https://github.com/janestreet/ppx_optional.git | |
ppx_pattern_bind;v0.16.0;git+https://github.com/janestreet/ppx_pattern_bind.git | |
ppx_pipebang;v0.16.0;git+https://github.com/janestreet/ppx_pipebang.git | |
ppx_python;v0.16.0;git+https://github.com/janestreet/ppx_python.git | |
ppx_sexp_conv;v0.16.0;git+https://github.com/janestreet/ppx_sexp_conv.git | |
ppx_sexp_message;v0.16.0;git+https://github.com/janestreet/ppx_sexp_message.git | |
ppx_sexp_value;v0.16.0;git+https://github.com/janestreet/ppx_sexp_value.git | |
ppx_stable;v0.16.0;git+https://github.com/janestreet/ppx_stable.git | |
ppx_stable_witness;v0.16.0;git+https://github.com/janestreet/ppx_stable_witness.git | |
ppx_string;v0.16.0;git+https://github.com/janestreet/ppx_string.git | |
ppx_traverse_builtins;v0.10.0;git+https://github.com/janestreet/ppx_traverse_builtins.git | |
ppx_tydi;v0.16.0;git+https://github.com/janestreet/ppx_tydi.git | |
ppx_typed_fields;v0.16.0;git+https://github.com/janestreet/ppx_typed_fields.git | |
ppx_typerep_conv;v0.16.0;git+https://github.com/janestreet/ppx_typerep_conv.git | |
ppx_variants_conv;v0.16.0;git+https://github.com/janestreet/ppx_variants_conv.git | |
ppx_xml_conv;v0.16.0;git+https://github.com/janestreet/ppx_xml_conv.git | |
ppx_yojson_conv;v0.16.0;git+https://github.com/janestreet/ppx_yojson_conv.git | |
ppx_yojson_conv_lib;v0.16.0;git+https://github.com/janestreet/ppx_yojson_conv_lib.git | |
protocol_version_header;v0.16.0;git+https://github.com/janestreet/protocol_version_header.git | |
result;1.5;git+https://github.com/janestreet/result.git | |
sexplib0;v0.16.0;git+https://github.com/janestreet/sexplib0.git | |
sexplib;v0.16.0;git+https://github.com/janestreet/sexplib.git | |
sexp_pretty;v0.16.0;git+https://github.com/janestreet/sexp_pretty.git | |
spawn;v0.15.1;git+https://github.com/janestreet/spawn.git | |
splittable_random;v0.16.0;git+https://github.com/janestreet/splittable_random.git | |
stdio;v0.16.0;git+https://github.com/janestreet/stdio.git | |
textutils;v0.16.0;git+https://github.com/janestreet/textutils.git | |
textutils_kernel;v0.16.0;git+https://github.com/janestreet/textutils_kernel.git | |
time_now;v0.16.0;git+https://github.com/janestreet/time_now.git | |
timezone;v0.16.0;git+https://github.com/janestreet/timezone.git | |
typerep;v0.16.0;git+https://github.com/janestreet/typerep.git | |
variantslib;v0.16.0;git+https://github.com/janestreet/variantslib.git | |
virtual_dom;v0.16.0;git+https://github.com/janestreet/virtual_dom.git | |
popper;0.1.1;git+https://github.com/jobjo/popper.git | |
ppx_blob;0.7.2;git+https://github.com/johnwhitington/ppx_blob.git | |
ppx_deriving_madcast;0.2;git+https://github.com/LesBoloss-es/ppx_deriving_madcast.git | |
merlin-extend;0.6.1;git+https://github.com/let-def/merlin-extend.git | |
gen_js_api;1.1.2;git+https://github.com/LexiFi/gen_js_api.git | |
ppx_jsobject_conv;0.10.0;git+https://github.com/little-arhat/ppx_jsobject_conv.git | |
ppx_const;2.0.1;git+https://github.com/mcclure/ppx_const.git | |
melange;1.0.0;git+https://github.com/melange-re/melange.git | |
alcotest;1.7.0;git+https://github.com/mirage/alcotest.git | |
bigarray-compat;1.1.0;git+https://github.com/mirage/bigarray-compat.git | |
ca-certs;0.2.3;git+https://github.com/mirage/ca-certs.git | |
capnp-rpc;1.2.3;git+https://github.com/mirage/capnp-rpc.git | |
checkseum;0.5.1;git+https://github.com/mirage/checkseum.git | |
coin;0.1.4;git+https://github.com/mirage/coin.git | |
colombe;0.8.0;git+https://github.com/mirage/colombe.git | |
decompress;1.5.2;git+https://github.com/mirage/decompress.git | |
digestif;1.1.4;git+https://github.com/mirage/digestif.git | |
either;1.0.0;git+https://github.com/mirage/either.git | |
eqaf;0.9;git+https://github.com/mirage/eqaf.git | |
ezjsonm;1.3.0;git+https://github.com/mirage/ezjsonm.git | |
ezxmlm;1.1.0;git+https://github.com/mirage/ezxmlm.git | |
ppx_irmin;3.7.2;git+https://github.com/mirage/irmin.git | |
irmin-watcher;0.5.0;git+https://github.com/mirage/irmin-watcher.git | |
ke;0.6;git+https://github.com/mirage/ke.git | |
lwt-dllist;1.0.1;git+https://github.com/mirage/lwt-dllist.git | |
metrics;0.4.1;git+https://github.com/mirage/metrics.git | |
mirage-clock;4.2.0;git+https://github.com/mirage/mirage-clock.git | |
mirage-crypto;0.10.7;git+https://github.com/mirage/mirage-crypto.git | |
mirage-flow;3.0.0;git+https://github.com/mirage/mirage-flow.git | |
mirage-kv;6.1.1;git+https://github.com/mirage/mirage-kv.git | |
mirage-kv-mem;3.2.1;git+https://github.com/mirage/mirage-kv-mem.git | |
mrmime;0.3.2;git+https://github.com/mirage/mrmime.git | |
base64;3.5.1;git+https://github.com/mirage/ocaml-base64.git | |
cf;0.5.0;git+https://github.com/mirage/ocaml-cf.git | |
cohttp;4.0.0;git+https://github.com/mirage/ocaml-cohttp.git | |
conduit;4.0.2;git+https://github.com/mirage/ocaml-conduit.git | |
crunch;3.3.1;git+https://github.com/mirage/ocaml-crunch.git | |
cstruct;6.2.0;git+https://github.com/mirage/ocaml-cstruct.git | |
fsevents;0.3.0;git+https://github.com/mirage/ocaml-fsevents.git | |
github;4.4.1;git+https://github.com/mirage/ocaml-github.git | |
hex;1.5.0;git+https://github.com/mirage/ocaml-hex.git | |
ipaddr;5.5.0;git+https://github.com/mirage/ocaml-ipaddr.git | |
magic-mime;1.3.0;git+https://github.com/mirage/ocaml-magic-mime.git | |
uri;4.2.0;git+https://github.com/mirage/ocaml-uri.git | |
optint;0.3.0;git+https://github.com/mirage/optint.git | |
pecu;0.6;git+https://github.com/mirage/pecu.git | |
prometheus;1.2;git+https://github.com/mirage/prometheus.git | |
ppx_repr;0.6.0;git+https://github.com/mirage/repr.git | |
rosetta;0.3.0;git+https://github.com/mirage/rosetta.git | |
uuuu;0.3.0;git+https://github.com/mirage/uuuu.git | |
yuscii;0.3.0;git+https://github.com/mirage/yuscii.git | |
asn1-combinators;0.2.6;git+https://github.com/mirleft/ocaml-asn1-combinators.git | |
tls;0.15.4;git+https://github.com/mirleft/ocaml-tls.git | |
x509;0.16.4;git+https://github.com/mirleft/ocaml-x509.git | |
biniou;1.2.2;git+https://github.com/mjambon/biniou.git | |
conf-libpcre;1;git+https://github.com/mmottl/pcre-ocaml.git | |
res;5.0.1;git+https://github.com/mmottl/res.git | |
md2mld;0.7.0;git+https://github.com/mseri/md2mld.git | |
ppx_yojson;1.2.0;git+https://github.com/NathanReb/ppx_yojson.git | |
xml-light;2.5;git+https://github.com/ncannasse/xml-light | |
ppx_parser;0.1.1;git+https://github.com/NielsMommen/ppx_parser.git | |
ppx_monad;0.2.0;git+https://github.com/Niols/ppx_monad.git | |
ppx_deriving_cad;0.2.0;git+https://github.com/OCADml/ppx_deriving_cad.git | |
camlp-streams;5.0.1;git+https://github.com/ocaml/camlp-streams.git | |
calendar;3.0.0;git+https://github.com/ocaml-community/calendar | |
cppo;1.6.9;git+https://github.com/ocaml-community/cppo.git | |
easy-format;1.3.4;git+https://github.com/ocaml-community/easy-format.git | |
ISO8601;0.2.6;git+https://github.com/ocaml-community/ISO8601.ml.git | |
linenoise;1.4.0;git+https://github.com/ocaml-community/ocaml-linenoise.git | |
sedlex;3.1;git+https://github.com/ocaml-community/sedlex.git | |
yojson;2.1.0;git+https://github.com/ocaml-community/yojson.git | |
octavius;1.2.2;git+https://github.com/ocaml-doc/octavius.git | |
odoc-parser;2.0.0;git+https://github.com/ocaml-doc/odoc-parser.git | |
csexp;1.5.2;git+https://github.com/ocaml-dune/csexp.git | |
dune;3.8.2;git+https://github.com/ocaml/dune.git | |
dot-merlin-reader;4.9;git+https://github.com/ocaml/merlin.git | |
num;1.4;git+https://github.com/ocaml/num.git | |
ocaml-system;4.14.1;git+https://github.com/ocaml/ocaml | |
ocamlbuild;0.14.2;git+https://github.com/ocaml/ocamlbuild.git | |
ocamlfind;1.9.6;git+https://github.com/ocaml/ocamlfind.git | |
seq;base;git+https://github.com/ocaml/ocaml.git | |
re;1.10.4;git+https://github.com/ocaml/ocaml-re.git | |
odoc;2.2.0;git+https://github.com/ocaml/odoc.git | |
omd;2.0.0~alpha3;git+https://github.com/ocaml/omd.git | |
opam-file-format;2.1.6;git+https://github.com/ocaml/opam-file-format | |
opam-core;2.1.5;git+https://github.com/ocaml/opam.git | |
ocamlformat-lib;0.25.1;git+https://github.com/ocaml-ppx/ocamlformat.git | |
ocaml-syntax-shims;1.0.0;git+https://github.com/ocaml-ppx/ocaml-syntax-shims.git | |
ppx_derivers;1.2.1;git+https://github.com/ocaml-ppx/ppx_derivers.git | |
ppx_deriving;5.2.1;git+https://github.com/ocaml-ppx/ppx_deriving.git | |
ppx_deriving_protobuf;3.0.0;git+https://github.com/ocaml-ppx/ppx_deriving_protobuf.git | |
ppx_deriving_yojson;3.7.0;git+https://github.com/ocaml-ppx/ppx_deriving_yojson.git | |
ppx_getenv;2.1;git+https://github.com/ocaml-ppx/ppx_getenv.git | |
ppx_import;1.10.0;git+https://github.com/ocaml-ppx/ppx_import.git | |
ppxlib;0.30.0;git+https://github.com/ocaml-ppx/ppxlib.git | |
directories;0.5;git+https://github.com/ocamlpro/directories.git | |
drom;0.8.0;git+https://github.com/ocamlpro/drom.git | |
ez_cmdliner;0.4.3;git+https://github.com/ocamlpro/ez_cmdliner.git | |
ez_config;0.2.0;git+https://github.com/ocamlpro/ez_config.git | |
ez_file;0.3.0;git+https://github.com/ocamlpro/ez_file.git | |
ez_opam_file;0.1.0;git+https://github.com/ocamlpro/ez_opam_file.git | |
ez_subst;0.2.1;git+https://github.com/ocamlpro/ez_subst.git | |
ocp-indent;1.8.1;git+https://github.com/OCamlPro/ocp-indent.git | |
ocplib-endian;1.2;git+https://github.com/OCamlPro/ocplib-endian.git | |
ocplib_stuff;0.4.0;git+https://github.com/ocamlpro/ocplib_stuff.git | |
stdlib-shims;0.3.0;git+https://github.com/ocaml/stdlib-shims.git | |
uchar;0.0.2;git+https://github.com/ocaml/uchar.git | |
zarith;1.12;git+https://github.com/ocaml/Zarith.git | |
eliom;10.0.0;git+https://github.com/ocsigen/eliom.git | |
js_of_ocaml;5.3.0;git+https://github.com/ocsigen/js_of_ocaml.git | |
js_of_ocaml-ocamlbuild;5.0;git+https://github.com/ocsigen/js_of_ocaml-ocamlbuild.git | |
lwt;5.6.1;git+https://github.com/ocsigen/lwt.git | |
lwt_log;1.1.2;git+https://github.com/ocsigen/lwt_log.git | |
lwt_ssl;1.2.0;git+https://github.com/ocsigen/lwt_ssl.git | |
ocsigenserver;5.0.1;git+https://github.com/ocsigen/ocsigenserver.git | |
ocsipersist;1.1.0;git+https://github.com/ocsigen/ocsipersist.git | |
reactiveData;0.3.0;git+https://github.com/ocsigen/reactiveData.git | |
tyxml;4.5.0;git+https://github.com/ocsigen/tyxml.git | |
ansi;0.6.0;git+https://github.com/ocurrent/ansi.git | |
current_incr;0.6.1;git+https://github.com/ocurrent/current_incr.git | |
dockerfile;8.2.1;git+https://github.com/ocurrent/ocaml-dockerfile.git | |
ocaml-version;3.6.1;git+https://github.com/ocurrent/ocaml-version.git | |
current_rpc;0.6.4;git+https://github.com/ocurrent/ocurrent.git | |
hilite;0.2.0;git+https://github.com/patricoferris/hilite.git | |
ppx_deriving_yaml;0.2.1;git+https://github.com/patricoferris/ppx_deriving_yaml.git | |
caqti;1.9.0;git+https://github.com/paurkedal/ocaml-caqti.git | |
ppx_compose;0.2.1;git+https://github.com/paurkedal/ppx_compose.git | |
ppx_regexp;0.5.1;git+https://github.com/paurkedal/ppx_regexp.git | |
camlrack;0.10.1;git+https://github.com/pdarragh/camlrack.git | |
psq;0.2.1;git+https://github.com/pqwy/psq.git | |
ppx_system;1.0;git+https://github.com/Psi-Prod/ppx_system.git | |
mdx;2.3.0;git+https://github.com/realworldocaml/mdx.git | |
reason;3.8.2;git+https://github.com/reasonml/reason.git | |
let-if;0.3.0;git+https://github.com/reynir/let-if.git | |
ppx_optint;0.1.0;git+https://github.com/reynir/ppx_optint.git | |
curly;0.3.0;git+https://github.com/rgrinberg/curly.git | |
stringext;1.6.0;git+https://github.com/rgrinberg/stringext.git | |
lun;0.0.1;git+https://github.com/roburio/lun.git | |
pg_query;0.9.7;git+https://github.com/roddyyaga/pg_query-ocaml.git | |
ppx_rapper;3.1.0;git+https://github.com/roddyyaga/ppx_rapper.git | |
dtools;0.4.4;git+https://github.com/savonet/ocaml-dtools.git | |
duppy;0.9.2;git+https://github.com/savonet/ocaml-duppy.git | |
mm;0.8.3;git+https://github.com/savonet/ocaml-mm.git | |
ssl;0.6.0;git+https://github.com/savonet/ocaml-ssl.git | |
ppx_deriving_hash;0.1.1;git+https://github.com/sim642/ppx_deriving_hash.git | |
ppx_viewpattern;0.1.0;git+https://github.com/sim642/ppx_viewpattern.git | |
ppx_show;0.2.1;git+https://github.com/thierry-martinez/ppx_show.git | |
pyml;20220905;git+https://github.com/thierry-martinez/pyml.git | |
stdcompat;19;git+https://github.com/thierry-martinez/stdcompat.git | |
dream-accept;0.1.0;git+https://github.com/tmattio/dream-accept.git | |
dream-cli;0.2.0;git+https://github.com/tmattio/dream-cli.git | |
dream-encoding;0.2.0;git+https://github.com/tmattio/dream-encoding.git | |
gitlab;0.1.7;git+https://github.com/tmcgilchrist/ocaml-gitlab.git | |
logs-ppx;0.2.0;git+https://github.com/ulrikstrid/logs-ppx.git | |
msgpck;1.7;git+https://github.com/vbmithr/ocaml-msgpck.git | |
ppx_deriving_qcheck;0.4.0;git+https://github.com/vch9/ppx_deriving_qcheck.git | |
ppx_distr_guards;0.3;git+https://github.com/vogler/ppx_distr_guards.git | |
inotify;2.4.1;git+https://github.com/whitequark/ocaml-inotify.git | |
ppx_matches;0.1;git+https://github.com/wrbs/ppx_matches | |
camlzip;1.11;git+https://github.com/xavierleroy/camlzip.git | |
cryptokit;1.18;git+https://github.com/xavierleroy/cryptokit.git | |
bitstring;4.1.0;git+https://github.com/xguerin/bitstring.git | |
integers;0.7.0;git+https://github.com/yallop/ocaml-integers.git | |
extunix;0.4.1;git+https://github.com/ygrek/extunix.git | |
camomile;1.0.2;git+https://github.com/yoriyuki/Camomile.git | |
ocaml-monadic;0.5;git+https://github.com/zepalmer/ocaml-monadic.git | |
ppx_meta_conv;4.1.0;git+https://gitlab.com/camlspotter/ppx_meta_conv | |
ppx_test;1.8.0;git+https://gitlab.com/camlspotter/ppx_test | |
ppxx;2.5.0;git+https://gitlab.com/camlspotter/ppxx | |
spotlib;4.3.0;git+https://gitlab.com/camlspotter/spotlib | |
ocamlnet;4.1.9-2;git+https://gitlab.com/gerdstolpmann/lib-ocamlnet3.git | |
ppx_inline_alcotest;1.0.0;git+https://gitlab.com/gopiandcode/ppx-inline-alcotest.git | |
json-data-encoding;1.0.0;git+https://gitlab.com/nomadic-labs/json-data-encoding | |
fix;20230505;git+https://gitlab.inria.fr/fpottier/fix.git | |
menhir;20230608;git+https://gitlab.inria.fr/fpottier/menhir.git | |
visitors;20210608;git+https://gitlab.inria.fr/fpottier/visitors.git | |
ppx_seq;0.3.2;git+https://git.sr.ht/~hyphen/ppx_seq | |
pringo;1.3;git+https://https://github.com/xavierleroy/pringo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
mkdir -p pkgs | |
while IFS=';' read name v url; do | |
pkg="$name.$v" | |
dst="pkgs/$pkg" | |
if ! [[ -e $dst ]]; then | |
opam source --dir="$dst" "$pkg" | |
fi | |
done < projects | |
ocaml ocamlformat_usage.ml > output |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Update the list of projects from the packages installed on a switch | |
while read pkg v repo; do | |
repo=${repo#\"} | |
repo=${repo%\"} | |
if [[ $repo = "" ]]; then continue; fi | |
echo "$pkg;$v;$repo" | |
done < <(opam list --short --columns=name,version,dev-repo:) | | |
sort -t ';' -k 3 -u |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment