var OSUtil = Packages.me.hatter.tools.commons.os.OSUtil; var getJavaHomeFromJdks = (version) => { var jdksPath = $$.file('~/.jssp/jdks'); if (!(jdksPath.exists() && jdksPath.isDirectory())) { return null; } var jdkVersions = $ARRAY(jdksPath.listFiles()).filter((p) => { return p.isDirectory(); }).map((p) => { var jdkVersion = p.getName(); if (jdkVersion.startsWith('jdk-')) { jdkVersion = jdkVersion.substring('jdk-'.length); } else if (jdkVersion.startsWith('jdk')) { jdkVersion = jdkVersion.substring('jdk'.length); } return [jdkVersion, p.getAbsolutePath()]; }).sort((a, b) => { return b[0] - a[0]; }); for (var i = 0; i < jdkVersions.length; i++) { if (jdkVersions[i][0].startsWith(version)) { return jdkVersions[i][1]; } } return null; }; var getJavaHomeFromBuildConfig = (version) => { var buildConfigRFile = __.rfile.from('~/.jssp/config/buildconfig.json'); if (buildConfigRFile.notExists()) { return null; } var buildConfigJSON = JSON.parse(buildConfigRFile.string()); if (buildConfigJSON['java'] && buildConfigJSON['java']['versions']) { var versions = buildConfigJSON['java']['versions']; for (var i = 0; i < versions.length; i++) { if (versions[i].startsWith(version)) { return buildConfigJSON['java'][versions[i]]['home']; } } } return null; } var getJavaHome = (version) => { if ((version == null) || ($STR(version) == '')) { return null; } if (OSUtil.isMacOS()) { var jversions = $$.shell().commands('/usr/libexec/java_home', '-version', version).start(); if (jversions[1] && $STR(jversions[1].toString()).contains('Unable to find any JVMs matching version')) { return null; } return jversions[0].toString().trim(); } else { var javaHomeFromJdks = getJavaHomeFromJdks(version); if (javaHomeFromJdks != null) { return javaHomeFromJdks; } var javaHomeFromBuildConfig = getJavaHomeFromBuildConfig(version); return javaHomeFromBuildConfig; } }; if (typeof exports == 'object') { exports.getJavaHome = getJavaHome; }