68 lines
2.3 KiB
JavaScript
68 lines
2.3 KiB
JavaScript
|
|
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;
|
|
}
|