nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix

117 lines
2.8 KiB
Nix
Raw Normal View History

{ lib, fetchurl, fetchzip, ocamlPackages }:
2018-10-22 12:03:33 +02:00
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";
2018-10-22 12:03:33 +02:00
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
];
2018-10-22 12:03:33 +02:00
post_0_14_buildInputs = [
base
2018-10-22 12:03:33 +02:00
cmdliner
fpath
ocaml-migrate-parsetree
2019-09-24 07:53:06 +02:00
odoc
re
2018-10-22 12:03:33 +02:00
stdio
2019-09-24 07:53:06 +02:00
uuseg
uutf
fix
menhir
2018-10-22 12:03:33 +02:00
];
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
2018-10-22 12:03:33 +02:00
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;
2018-10-22 12:03:33 +02:00
};
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;
2018-10-22 12:03:33 +02:00
}