jdeploy-installer 3.0.0-alpha.30 → 3.0.0-alpha.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
Binary file
|
|
@@ -7,6 +7,17 @@ var port = "0";
|
|
|
7
7
|
var warPath = "";
|
|
8
8
|
var javaVersionString = "11";
|
|
9
9
|
var tryJavaHomeFirst = false;
|
|
10
|
+
var javafx = false;
|
|
11
|
+
var bundleType = 'jre';
|
|
12
|
+
if ('{{JAVAFX}}' === 'true') {
|
|
13
|
+
javafx = true;
|
|
14
|
+
}
|
|
15
|
+
if ('{{JDK}}' === 'true') {
|
|
16
|
+
bundleType = 'jdk';
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var jdk = (bundleType === 'jdk');
|
|
20
|
+
var jdkProvider = 'zulu';
|
|
10
21
|
|
|
11
22
|
|
|
12
23
|
function njreWrap() {
|
|
@@ -35,11 +46,17 @@ function njreWrap() {
|
|
|
35
46
|
}
|
|
36
47
|
|
|
37
48
|
function download (dir, url) {
|
|
49
|
+
if (url.indexOf("?") > 0 || jdkProvider === 'zulu') {
|
|
50
|
+
var destName = bundleType + ".zip";
|
|
51
|
+
} else {
|
|
52
|
+
destName = path.basename(url);
|
|
53
|
+
}
|
|
54
|
+
|
|
38
55
|
return new Promise((resolve, reject) => {
|
|
39
56
|
createDir(dir)
|
|
40
57
|
.then(() => fetch(url))
|
|
41
58
|
.then(response => {
|
|
42
|
-
const destFile = path.join(dir,
|
|
59
|
+
const destFile = path.join(dir, destName)
|
|
43
60
|
const destStream = fs.createWriteStream(destFile)
|
|
44
61
|
response.body.pipe(destStream).on('finish', () => resolve(destFile))
|
|
45
62
|
})
|
|
@@ -87,17 +104,20 @@ function njreWrap() {
|
|
|
87
104
|
fs.mkdirSync(jdeployDir);
|
|
88
105
|
}
|
|
89
106
|
|
|
90
|
-
var jreDir = path.join(jdeployDir,
|
|
107
|
+
var jreDir = path.join(jdeployDir, bundleType);
|
|
91
108
|
if (!fs.existsSync(jreDir)) {
|
|
92
109
|
fs.mkdirSync(jreDir);
|
|
93
110
|
}
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
var vs = javaVersionString;
|
|
112
|
+
if (javafx) {
|
|
113
|
+
vs += 'fx';
|
|
114
|
+
}
|
|
115
|
+
jreDir = path.join(jreDir, vs);
|
|
96
116
|
if (!fs.existsSync(jreDir)) {
|
|
97
117
|
fs.mkdirSync(jreDir);
|
|
98
118
|
}
|
|
99
119
|
const newFile = path.join(jreDir, file.split(path.sep).slice(-1)[0])
|
|
100
|
-
|
|
120
|
+
//console.log("Copying file "+file+" to "+newFile);
|
|
101
121
|
fs.copyFile(file, newFile, err => {
|
|
102
122
|
if (err) reject(err)
|
|
103
123
|
|
|
@@ -110,6 +130,7 @@ function njreWrap() {
|
|
|
110
130
|
}
|
|
111
131
|
|
|
112
132
|
function extractZip (file, dir) {
|
|
133
|
+
//console.log("Extracting "+file+" to "+dir);
|
|
113
134
|
return new Promise((resolve, reject) => {
|
|
114
135
|
yauzl.open(file, { lazyEntries: true }, (err, zipFile) => {
|
|
115
136
|
if (err) reject(err)
|
|
@@ -157,8 +178,10 @@ function njreWrap() {
|
|
|
157
178
|
}
|
|
158
179
|
|
|
159
180
|
function extract (file) {
|
|
160
|
-
|
|
181
|
+
var dirString = jdk? 'jdk' : 'jre';
|
|
161
182
|
|
|
183
|
+
const dir = path.join(path.dirname(file), dirString)
|
|
184
|
+
//console.log("About to extract "+file+" to "+dir);
|
|
162
185
|
return createDir(dir).then(() => {
|
|
163
186
|
return path.extname(file) === '.zip'
|
|
164
187
|
? extractZip(file, dir)
|
|
@@ -198,9 +221,14 @@ function njreWrap() {
|
|
|
198
221
|
* // Handle the error
|
|
199
222
|
* })
|
|
200
223
|
*/
|
|
201
|
-
function install (version =
|
|
202
|
-
const { openjdk_impl = 'hotspot', release = 'latest', type = 'jre' } = options
|
|
224
|
+
function install (version = 11, options = {}) {
|
|
225
|
+
const { openjdk_impl = 'hotspot', release = 'latest', type = 'jre', javafx = false, provider = 'zulu' } = options
|
|
203
226
|
options = { ...options, openjdk_impl, release, type }
|
|
227
|
+
|
|
228
|
+
if (provider === 'zulu') {
|
|
229
|
+
return installZulu(version, options);
|
|
230
|
+
}
|
|
231
|
+
|
|
204
232
|
let url = 'https://api.adoptopenjdk.net/v2/info/releases/openjdk' + version + '?'
|
|
205
233
|
|
|
206
234
|
if (!options.os) {
|
|
@@ -245,6 +273,50 @@ function njreWrap() {
|
|
|
245
273
|
.then(extract)
|
|
246
274
|
}
|
|
247
275
|
|
|
276
|
+
function installZulu(version = 11, options = {}) {
|
|
277
|
+
const { type = 'jre', javafx = false } = options
|
|
278
|
+
var q = {
|
|
279
|
+
|
|
280
|
+
java_version: version,
|
|
281
|
+
ext: 'zip',
|
|
282
|
+
bundleType: type,
|
|
283
|
+
javafx: ''+javafx,
|
|
284
|
+
arch: 'x86',
|
|
285
|
+
hw_bitness: '64',
|
|
286
|
+
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
var zuluBaseURL = "https://api.azul.com/zulu/download/community/v1.0/bundles/latest/binary?"
|
|
290
|
+
if (!options.os) {
|
|
291
|
+
switch (process.platform) {
|
|
292
|
+
|
|
293
|
+
case 'darwin':
|
|
294
|
+
q.OS = 'macos'
|
|
295
|
+
break
|
|
296
|
+
case 'linux':
|
|
297
|
+
q.OS = 'linux'
|
|
298
|
+
break
|
|
299
|
+
|
|
300
|
+
case 'win32':
|
|
301
|
+
case 'win64':
|
|
302
|
+
q.OS = 'windows'
|
|
303
|
+
break
|
|
304
|
+
default:
|
|
305
|
+
return Promise.reject(new Error('Unsupported operating system'))
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
var url = zuluBaseURL;
|
|
311
|
+
Object.keys(q).forEach(key => { url += key + '=' + q[key] + '&' })
|
|
312
|
+
const tmpdir = path.join(os.tmpdir(), 'njre')
|
|
313
|
+
//console.log("Downloading "+url);
|
|
314
|
+
return download(tmpdir, url)
|
|
315
|
+
.then(move)
|
|
316
|
+
.then(extract)
|
|
317
|
+
|
|
318
|
+
}
|
|
319
|
+
|
|
248
320
|
return {install:install};
|
|
249
321
|
|
|
250
322
|
|
|
@@ -299,6 +371,66 @@ var getDirectories = dirPath => fs.readdirSync(dirPath).filter(
|
|
|
299
371
|
file => fs.statSync(path.join(dirPath, file)).isDirectory()
|
|
300
372
|
);
|
|
301
373
|
|
|
374
|
+
function getJavaHomeInPath(basepath) {
|
|
375
|
+
|
|
376
|
+
var dirs = null;
|
|
377
|
+
try {
|
|
378
|
+
dirs = getDirectories(basepath);
|
|
379
|
+
} catch (e) {
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
if (dirs && dirs.length > 0) {
|
|
383
|
+
basepath = path.join(basepath, dirs[0]);
|
|
384
|
+
if (os.platform() != 'darwin') {
|
|
385
|
+
return basepath;
|
|
386
|
+
}
|
|
387
|
+
if (fs.existsSync(path.join(basepath, 'Contents', 'Home'))) {
|
|
388
|
+
return path.join(basepath, 'Contents', 'Home');
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
var adapterDirectories = getDirectories(basepath).filter(subdir => {
|
|
392
|
+
return subdir.match(/^zulu/) && fs.existsSync(path.join(basepath, subdir, 'Contents', 'Home'));
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
if (adapterDirectories && adapterDirectories.length > 0) {
|
|
396
|
+
return path.join(basepath, adapterDirectories[0], 'Contents', 'Home');
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
function findSupportedRuntime(javaVersion, jdk, javafx) {
|
|
403
|
+
var jdeployDir = path.join(os.homedir(), ".jdeploy");
|
|
404
|
+
|
|
405
|
+
// First check for the full-meal deal
|
|
406
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion+'fx', 'jdk'));
|
|
407
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
408
|
+
return _javaHomePath;
|
|
409
|
+
}
|
|
410
|
+
if (!javafx) {
|
|
411
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion, 'jdk'));
|
|
412
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
413
|
+
return _javaHomePath;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
if (!jdk) {
|
|
418
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion+'fx', 'jre'));
|
|
419
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
420
|
+
return _javaHomePath;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
if (!jdk && !javafx) {
|
|
425
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion, 'jre'));
|
|
426
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
|
427
|
+
return _javaHomePath;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return null;
|
|
431
|
+
|
|
432
|
+
}
|
|
433
|
+
|
|
302
434
|
function getEmbeddedJavaHome() {
|
|
303
435
|
var _platform = os.platform();
|
|
304
436
|
var _driver = '';
|
|
@@ -309,8 +441,13 @@ function getEmbeddedJavaHome() {
|
|
|
309
441
|
default:
|
|
310
442
|
fail('unsupported platform: ' + _platform);
|
|
311
443
|
}
|
|
444
|
+
var vs = javaVersionString;
|
|
445
|
+
if (javafx) {
|
|
446
|
+
vs += 'fx';
|
|
447
|
+
}
|
|
448
|
+
var typeDir = jdk ? 'jdk' : 'jre';
|
|
312
449
|
|
|
313
|
-
var jreDir = path.join(os.homedir(), '.jdeploy', 'jre',
|
|
450
|
+
var jreDir = path.join(os.homedir(), '.jdeploy', 'jre', vs, 'jre');
|
|
314
451
|
try {
|
|
315
452
|
var out = jreDir + path.sep + getDirectories(jreDir)[0] + (_driver ? (path.sep + _driver) : '');
|
|
316
453
|
return out;
|
|
@@ -362,7 +499,7 @@ if (tryJavaHomeFirst) {
|
|
|
362
499
|
|
|
363
500
|
if (!done) {
|
|
364
501
|
|
|
365
|
-
var _javaHome =
|
|
502
|
+
var _javaHome = findSupportedRuntime(javaVersionString, bundleType === 'jdk', javafx);
|
|
366
503
|
if (_javaHome && fs.existsSync(_javaHome)) {
|
|
367
504
|
var javaVersion = getJavaVersion(path.join(_javaHome, 'bin'));
|
|
368
505
|
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
|
@@ -377,13 +514,22 @@ if (!done) {
|
|
|
377
514
|
|
|
378
515
|
if (!done) {
|
|
379
516
|
console.log("Downloading java runtime environment for version "+targetJavaVersion);
|
|
380
|
-
njre.install(targetJavaVersion).then(function(dir) {
|
|
381
|
-
|
|
382
|
-
if (
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
517
|
+
njre.install(targetJavaVersion, {type: bundleType, javafx: javafx}).then(function(dir) {
|
|
518
|
+
var _javaHome = getJavaHomeInPath(dir);
|
|
519
|
+
if (_javaHome == null)
|
|
520
|
+
|
|
521
|
+
if (!_javaHome || !fs.existsSync(_javaHome)) {
|
|
522
|
+
throw new Error("After install, could not find java home at "+_javaHome);
|
|
523
|
+
}
|
|
524
|
+
env['JAVA_HOME'] = _javaHome;
|
|
525
|
+
|
|
526
|
+
var javaBinary = path.join(_javaHome, 'bin', 'java');
|
|
527
|
+
if (!fs.existsSync(javaBinary)) {
|
|
528
|
+
javaBinary += '.exe';
|
|
529
|
+
|
|
386
530
|
}
|
|
531
|
+
fs.chmodSync(javaBinary, 0755);
|
|
532
|
+
|
|
387
533
|
env['PATH'] = path.join(env['JAVA_HOME'], 'bin') + path.delimiter + env['PATH'];
|
|
388
534
|
|
|
389
535
|
run(env['JAVA_HOME']);
|
|
Binary file
|
package/package.json
CHANGED