greenmask: 0.2.6 -> 0.2.7 (#378403)
[NixPkgs.git] / pkgs / by-name / fr / frink / package.nix
blob818a70bfe2a027ad1e2184261676475b35a6d285
2   fetchurl,
3   frink,
4   jdk,
5   lib,
6   rlwrap,
7   stdenv,
8   testers,
9 }:
10 stdenv.mkDerivation rec {
11   pname = "frink";
12   version = "2024-05-09";
14   src = fetchurl {
15     # Upstream does not provide versioned download links
16     url = "https://web.archive.org/web/20240605193919/https://frinklang.org/frinkjar/frink-tng.jar";
17     sha256 = "sha256-ceV1p9wsXprcNLhol79evswVZ1SpH5IzfSbl8st4cmU=";
18   };
20   dontUnpack = true;
22   nativeBuildInputs = [ jdk ];
24   buildInputs = [
25     jdk
26     rlwrap
27   ];
29   installPhase = ''
30     runHook preInstall
32     mkdir -p $out/bin $out/lib
34     cp ${src} $out/lib/frink-tng.jar
36     # Generate rlwrap helper files.
37     # See https://frinklang.org/fsp/colorize.fsp?f=listUnits.frink
38     # and https://frinklang.org/fsp/colorize.fsp?f=listFunctions.frink
39     java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[lexicalSort[units[]]]' > $out/lib/unitnames.txt
40     java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[map[{|f|
41         f =~ %s/\s+//g
42         return "$f$"
43       }, lexicalSort[functions[]]]]' > $out/lib/functionnames.txt
45     cat > "$out/bin/frink" << EOF
46     #!${stdenv.shell}
47     exec ${rlwrap}/bin/rlwrap -f $out/lib/unitnames.txt -b '$' -f $out/lib/functionnames.txt ${jdk}/bin/java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter "\$@"
48     EOF
50     chmod a+x "$out/bin/frink"
52     runHook postInstall
53   '';
55   meta = with lib; {
56     description = "Practical calculating tool and programming language";
57     homepage = "https://frinklang.org/";
58     license = licenses.unfree;
59     sourceProvenance = [ sourceTypes.binaryBytecode ];
60     maintainers = [ maintainers.stefanfehrenbach ];
61   };
63   passthru.tests = {
64     callFrinkVersion = testers.testVersion {
65       package = frink;
66       command = "frink -e 'FrinkVersion[]'";
67     };
68   };