1{ lib, stdenv, fetchFromGitHub, jre, makeWrapper, maven }:
2
3let
4 pname = "jd-cli";
5 version = "1.2.1";
6
7 src = fetchFromGitHub {
8 owner = "intoolswetrust";
9 repo = pname;
10 rev = "${pname}-${version}";
11 hash = "sha256-rRttA5H0A0c44loBzbKH7Waoted3IsOgxGCD2VM0U/Q=";
12 };
13
14 deps = stdenv.mkDerivation {
15 name = "${pname}-${version}-deps";
16 inherit src;
17
18 nativeBuildInputs = [ maven ];
19 buildPhase = ''
20 mvn package -Dmaven.repo.local=$out
21 '';
22
23 # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
24 installPhase = ''
25 find $out -type f \
26 -name \*.lastUpdated -or \
27 -name resolver-status.properties -or \
28 -name _remote.repositories \
29 -delete
30 '';
31
32 dontFixup = true;
33 outputHashAlgo = "sha256";
34 outputHashMode = "recursive";
35 outputHash = "sha256-5d3ZLuzoEkPjh01uL/BuhJ6kevLdsm1P4PMLkEWaVUM=";
36 };
37
38in stdenv.mkDerivation rec {
39 inherit pname version src;
40
41 nativeBuildInputs = [ maven makeWrapper ];
42
43 buildPhase = ''
44 mvn --offline -Dmaven.repo.local=${deps} package;
45 '';
46
47 installPhase = ''
48 mkdir -p $out/bin $out/share/jd-cli
49 install -Dm644 jd-cli/target/jd-cli.jar $out/share/jd-cli
50
51 makeWrapper ${jre}/bin/java $out/bin/jd-cli \
52 --add-flags "-jar $out/share/jd-cli/jd-cli.jar"
53 '';
54
55 meta = with lib; {
56 description = "Simple command line wrapper around JD Core Java Decompiler project";
57 homepage = "https://github.com/intoolswetrust/jd-cli";
58 license = licenses.gpl3;
59 platforms = platforms.unix;
60 maintainers = with maintainers; [ majiir ];
61 };
62}