55 lines
1.5 KiB
Nix
55 lines
1.5 KiB
Nix
{pkgs, piston, ...}:
|
|
let
|
|
pkg = pkgs.groovy;
|
|
jre = pkgs.jre;
|
|
awk = pkgs.gawk;
|
|
sed = pkgs.gnused;
|
|
grep = pkgs.gnugrep;
|
|
in piston.mkRuntime {
|
|
language = "groovy";
|
|
version = pkg.version;
|
|
|
|
aliases = [
|
|
"gvy"
|
|
];
|
|
|
|
compile = ''
|
|
# Groovyc has some dependencies on GNU grep, sed, and awk in their startup script
|
|
export PATH="$PATH:${awk}/bin:${sed}/bin:${grep}/bin"
|
|
|
|
# Compile groovy scripts into a separate "classes" directory
|
|
# NOTE: - Main file MUST be a groovy script
|
|
# - not supporting object class entry points as of now
|
|
${pkg}/bin/groovyc -d classes "$@"
|
|
|
|
# Create the Manifest and include groovy jars:
|
|
# NOTE: - main class will be the first file ('.' becomes '_' and without the extension)
|
|
# - groovy lib jars MUST be in the class path in order to work properly
|
|
echo "Main-Class: $(sed 's/\./\_/g'<<<''${1%.*})
|
|
Class-Path: $(echo ${pkg}/lib/*.jar | sed 's/\s/\n /g')
|
|
|
|
" > manifest.txt
|
|
|
|
# Create the jar from the manifest and classes
|
|
${jre}/bin/jar cfm out.jar manifest.txt -C classes .
|
|
'';
|
|
|
|
run = ''
|
|
shift
|
|
${jre}/bin/java -jar out.jar "$@"
|
|
'';
|
|
|
|
tests = [
|
|
(piston.mkTest {
|
|
files = {
|
|
"test.groovy" = ''
|
|
println 'OK'
|
|
'';
|
|
};
|
|
args = [];
|
|
stdin = "";
|
|
packages = [];
|
|
main = "test.groovy";
|
|
})
|
|
];
|
|
} |