c4cb4c226e
OCamlformat is still a bit unstable and it's common to work on several projects that each use a different version. Define every versions at once and share code * ocamlformat: add dependency on base OCamlformat always required Base. This will be important in the future as Base may make breaking changes.
116 lines
2.8 KiB
Nix
116 lines
2.8 KiB
Nix
{ lib, fetchurl, fetchzip, ocamlPackages }:
|
|
|
|
with ocamlPackages;
|
|
|
|
let
|
|
mkOCamlformat = {
|
|
version,
|
|
sha256,
|
|
buildInputs,
|
|
useDune2 ? true,
|
|
tarballName ? "ocamlformat-${version}.tbz",
|
|
# The 'src' argument can be removed when 0.11.0 is pruned
|
|
src ? fetchurl {
|
|
url = "https://github.com/ocaml-ppx/ocamlformat/releases/download/${version}/${tarballName}";
|
|
inherit sha256;
|
|
}
|
|
}:
|
|
buildDunePackage rec {
|
|
pname = "ocamlformat";
|
|
|
|
minimumOCamlVersion = "4.06";
|
|
|
|
inherit src version useDune2 buildInputs;
|
|
|
|
meta = {
|
|
homepage = "https://github.com/ocaml-ppx/ocamlformat";
|
|
description = "Auto-formatter for OCaml code";
|
|
maintainers = [ lib.maintainers.Zimmi48 lib.maintainers.marsam ];
|
|
license = lib.licenses.mit;
|
|
};
|
|
};
|
|
|
|
post_0_11_buildInputs = [
|
|
base
|
|
cmdliner
|
|
fpath
|
|
ocaml-migrate-parsetree
|
|
odoc
|
|
re
|
|
stdio
|
|
uuseg
|
|
uutf
|
|
];
|
|
|
|
post_0_14_buildInputs = [
|
|
base
|
|
cmdliner
|
|
fpath
|
|
ocaml-migrate-parsetree
|
|
odoc
|
|
re
|
|
stdio
|
|
uuseg
|
|
uutf
|
|
fix
|
|
menhir
|
|
];
|
|
in
|
|
|
|
# Older versions should be removed when their usage decrease
|
|
# This script scraps Github looking for OCamlformat's options and versions usage:
|
|
# https://gist.github.com/Julow/110dc94308d6078225e0665e3eccd433
|
|
|
|
rec {
|
|
ocamlformat_0_11_0 = mkOCamlformat rec {
|
|
version = "0.11.0";
|
|
src = fetchzip {
|
|
url = "https://github.com/ocaml-ppx/ocamlformat/archive/0.11.0.tar.gz";
|
|
inherit sha256;
|
|
};
|
|
sha256 = "0zvjn71jd4d3znnpgh0yphb2w8ggs457b6bl6cg1fmpdgxnds6yx";
|
|
useDune2 = false;
|
|
buildInputs = post_0_11_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_12 = mkOCamlformat {
|
|
version = "0.12";
|
|
sha256 = "1zi8x597dhp2822j6j28s84yyiqppl7kykpwqqclx6ybypvlzdpj";
|
|
useDune2 = false;
|
|
buildInputs = post_0_11_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_13_0 = mkOCamlformat rec {
|
|
version = "0.13.0";
|
|
sha256 = "0ki2flqi3xkhw9mfridivb6laxm7gml8rj9qz42vqmy9yx76jjxq";
|
|
tarballName = "ocamlformat-${version}-2.tbz";
|
|
useDune2 = false;
|
|
buildInputs = post_0_11_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_14_0 = mkOCamlformat {
|
|
version = "0.14.0";
|
|
sha256 = "070c0x6z5y0lyls56zm34g8lyc093wkr0jfp50dvrkr9fk1sx2wi";
|
|
buildInputs = post_0_14_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_14_1 = mkOCamlformat {
|
|
version = "0.14.1";
|
|
sha256 = "03wn46xib63748157xchj7gflkw5000fcjw6n89h9g82q9slazaa";
|
|
buildInputs = post_0_14_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_14_2 = mkOCamlformat {
|
|
version = "0.14.2";
|
|
sha256 = "16phz1sg9b070p6fm8d42j0piizg05vghdjmw8aj7xm82b1pm7sz";
|
|
buildInputs = post_0_14_buildInputs;
|
|
};
|
|
|
|
ocamlformat_0_15_0 = mkOCamlformat {
|
|
version = "0.15.0";
|
|
sha256 = "0190vz59n6ma9ca1m3syl3mc8i1smj1m3d8x1jp21f710y4llfr6";
|
|
buildInputs = post_0_14_buildInputs;
|
|
};
|
|
|
|
ocamlformat = ocamlformat_0_15_0;
|
|
}
|