about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix113
1 files changed, 97 insertions, 16 deletions
diff --git a/nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix b/nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix
index c79f65b47a80..5b607d3d6c64 100644
--- a/nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix
+++ b/nixpkgs/pkgs/development/tools/ocaml/ocamlformat/default.nix
@@ -1,19 +1,49 @@
-{ lib, fetchurl, ocamlPackages }:
+{ lib, fetchurl, fetchzip, ocamlPackages }:
 
-with ocamlPackages; buildDunePackage rec {
-  pname = "ocamlformat";
-  version = "0.14.2";
+with ocamlPackages;
 
-  minimumOCamlVersion = "4.06";
+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";
 
-  useDune2 = true;
+      minimumOCamlVersion = "4.06";
 
-  src = fetchurl {
-    url = "https://github.com/ocaml-ppx/ocamlformat/releases/download/${version}/ocamlformat-${version}.tbz";
-    sha256 = "16phz1sg9b070p6fm8d42j0piizg05vghdjmw8aj7xm82b1pm7sz";
-  };
+      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
+  ];
 
-  buildInputs = [
+  post_0_14_buildInputs = [
+    base
     cmdliner
     fpath
     ocaml-migrate-parsetree
@@ -25,11 +55,62 @@ with ocamlPackages; buildDunePackage rec {
     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
 
-  meta = {
-    homepage = "https://github.com/ocaml-ppx/ocamlformat";
-    description = "Auto-formatter for OCaml code";
-    maintainers = [ lib.maintainers.Zimmi48 ];
-    license = lib.licenses.mit;
+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;
 }