about summary refs log tree commit diff
path: root/pkgs/development/tools/scalafix/default.nix
blob: 4b4f887d4a04e4c3bfdc171001862130a0be352f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  lib,
  stdenv,
  jre,
  coursier,
  makeWrapper,
  installShellFiles,
  setJavaClassPath,
  testers,
}:
stdenv.mkDerivation (
  finalAttrs: {
    pname = "scalafix";
    version = "0.12.0";
    deps = stdenv.mkDerivation {
      name = "${finalAttrs.pname}-deps-${finalAttrs.version}";
      buildCommand = ''
        export COURSIER_CACHE=$(pwd)
        ${coursier}/bin/cs fetch ch.epfl.scala:scalafix-cli_2.13.13:${finalAttrs.version} > deps
        mkdir -p $out/share/java
        cp $(< deps) $out/share/java/
      '';
      outputHashMode = "recursive";
      outputHash = "sha256-HMTnr3awTIAgLSl4eF36U1kv162ajJxC5MreSk2TfUE=";
    };

    nativeBuildInputs = [makeWrapper installShellFiles setJavaClassPath];
    buildInputs = [finalAttrs.deps];

    dontUnpack = true;

    installPhase = ''
      makeWrapper ${jre}/bin/java $out/bin/${finalAttrs.pname} \
        --add-flags "-cp $CLASSPATH scalafix.cli.Cli"

      installShellCompletion --cmd ${finalAttrs.pname} \
        --bash <($out/bin/${finalAttrs.pname} --bash) \
        --zsh  <($out/bin/${finalAttrs.pname} --zsh)
    '';

    passthru.tests = {
      testVersion = testers.testVersion {
        program = "${finalAttrs.pname}";
        version = "${finalAttrs.version}";
      };
    };

    meta = with lib; {
      description = "Refactoring and linting tool for Scala";
      mainProgram = "scalafix";
      homepage = "https://scalacenter.github.io/scalafix/";
      license = licenses.bsd3;
      maintainers = [maintainers.tomahna];
      sourceProvenance = with sourceTypes; [ binaryBytecode ];
    };
  }
)