fasrh 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
package/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Sistema para gestão de recursos humanos
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,627 @@
|
|
1
|
+
#! /usr/bin/env node
|
2
|
+
|
3
|
+
var jarName = "FasRh.jar";
|
4
|
+
var mainClass = "{{MAIN_CLASS}}";
|
5
|
+
var classPath = "{{CLASSPATH}}";
|
6
|
+
var port = "0";
|
7
|
+
var warPath = "";
|
8
|
+
var javaVersionString = "23";
|
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';
|
21
|
+
|
22
|
+
|
23
|
+
function njreWrap() {
|
24
|
+
'use strict'
|
25
|
+
|
26
|
+
const path = require('path')
|
27
|
+
const fs = require('fs')
|
28
|
+
const os = require('os')
|
29
|
+
const crypto = require('crypto')
|
30
|
+
const fetch = require('node-fetch')
|
31
|
+
const yauzl = require('yauzl')
|
32
|
+
const tar = require('tar')
|
33
|
+
|
34
|
+
function createDir (dir) {
|
35
|
+
return new Promise((resolve, reject) => {
|
36
|
+
fs.access(dir, err => {
|
37
|
+
if (err && err.code === 'ENOENT') {
|
38
|
+
fs.mkdir(dir, err => {
|
39
|
+
if (err) reject(err)
|
40
|
+
resolve()
|
41
|
+
})
|
42
|
+
} else if (!err) resolve()
|
43
|
+
else reject(err)
|
44
|
+
})
|
45
|
+
})
|
46
|
+
}
|
47
|
+
|
48
|
+
function download (dir, url) {
|
49
|
+
if (url.indexOf("?") > 0 || jdkProvider === 'zulu') {
|
50
|
+
var ext = ".zip";
|
51
|
+
switch (process.platform) {
|
52
|
+
case 'linux':
|
53
|
+
ext = ".tar.gz";
|
54
|
+
break;
|
55
|
+
}
|
56
|
+
var destName = bundleType + ext;
|
57
|
+
} else {
|
58
|
+
destName = path.basename(url);
|
59
|
+
}
|
60
|
+
|
61
|
+
return new Promise((resolve, reject) => {
|
62
|
+
createDir(dir)
|
63
|
+
.then(() => fetch(url))
|
64
|
+
.then(response => {
|
65
|
+
const destFile = path.join(dir, destName)
|
66
|
+
const destStream = fs.createWriteStream(destFile)
|
67
|
+
response.body.pipe(destStream).on('finish', () => resolve(destFile))
|
68
|
+
})
|
69
|
+
.catch(err => reject(err))
|
70
|
+
})
|
71
|
+
}
|
72
|
+
|
73
|
+
function downloadAll (dir, url) {
|
74
|
+
return download(dir, url + '.sha256.txt').then(() => download(dir, url))
|
75
|
+
}
|
76
|
+
|
77
|
+
function genChecksum (file) {
|
78
|
+
return new Promise((resolve, reject) => {
|
79
|
+
fs.readFile(file, (err, data) => {
|
80
|
+
if (err) reject(err)
|
81
|
+
|
82
|
+
resolve(
|
83
|
+
crypto
|
84
|
+
.createHash('sha256')
|
85
|
+
.update(data)
|
86
|
+
.digest('hex')
|
87
|
+
)
|
88
|
+
})
|
89
|
+
})
|
90
|
+
}
|
91
|
+
|
92
|
+
function verify (file) {
|
93
|
+
return new Promise((resolve, reject) => {
|
94
|
+
fs.readFile(file + '.sha256.txt', 'utf-8', (err, data) => {
|
95
|
+
if (err) reject(err)
|
96
|
+
|
97
|
+
genChecksum(file).then(checksum => {
|
98
|
+
checksum === data.split(' ')[0]
|
99
|
+
? resolve(file)
|
100
|
+
: reject(new Error('File and checksum don\'t match'))
|
101
|
+
})
|
102
|
+
})
|
103
|
+
})
|
104
|
+
}
|
105
|
+
|
106
|
+
function move (file) {
|
107
|
+
return new Promise((resolve, reject) => {
|
108
|
+
const jdeployDir = path.join(os.homedir(), '.jdeploy');
|
109
|
+
if (!fs.existsSync(jdeployDir)) {
|
110
|
+
fs.mkdirSync(jdeployDir);
|
111
|
+
}
|
112
|
+
|
113
|
+
var jreDir = path.join(jdeployDir, bundleType);
|
114
|
+
if (!fs.existsSync(jreDir)) {
|
115
|
+
fs.mkdirSync(jreDir);
|
116
|
+
}
|
117
|
+
var vs = javaVersionString;
|
118
|
+
if (javafx) {
|
119
|
+
vs += 'fx';
|
120
|
+
}
|
121
|
+
jreDir = path.join(jreDir, vs);
|
122
|
+
if (!fs.existsSync(jreDir)) {
|
123
|
+
fs.mkdirSync(jreDir);
|
124
|
+
}
|
125
|
+
const newFile = path.join(jreDir, file.split(path.sep).slice(-1)[0])
|
126
|
+
//console.log("Copying file "+file+" to "+newFile);
|
127
|
+
fs.copyFile(file, newFile, err => {
|
128
|
+
if (err) reject(err)
|
129
|
+
|
130
|
+
fs.unlink(file, err => {
|
131
|
+
if (err) reject(err)
|
132
|
+
resolve(newFile)
|
133
|
+
})
|
134
|
+
})
|
135
|
+
})
|
136
|
+
}
|
137
|
+
|
138
|
+
function extractZip (file, dir) {
|
139
|
+
//console.log("Extracting "+file+" to "+dir);
|
140
|
+
return new Promise((resolve, reject) => {
|
141
|
+
yauzl.open(file, { lazyEntries: true }, (err, zipFile) => {
|
142
|
+
if (err) reject(err)
|
143
|
+
|
144
|
+
zipFile.readEntry()
|
145
|
+
zipFile.on('entry', entry => {
|
146
|
+
const entryPath = path.join(dir, entry.fileName)
|
147
|
+
|
148
|
+
if (/\/$/.test(entry.fileName)) {
|
149
|
+
fs.mkdir(entryPath, { recursive: true }, err => {
|
150
|
+
if (err && err.code !== 'EEXIST') reject(err)
|
151
|
+
|
152
|
+
zipFile.readEntry()
|
153
|
+
})
|
154
|
+
} else {
|
155
|
+
zipFile.openReadStream(entry, (err, readStream) => {
|
156
|
+
if (err) reject(err)
|
157
|
+
|
158
|
+
readStream.on('end', () => {
|
159
|
+
zipFile.readEntry()
|
160
|
+
})
|
161
|
+
readStream.pipe(fs.createWriteStream(entryPath))
|
162
|
+
})
|
163
|
+
}
|
164
|
+
})
|
165
|
+
zipFile.once('close', () => {
|
166
|
+
fs.unlink(file, err => {
|
167
|
+
if (err) reject(err)
|
168
|
+
resolve(dir)
|
169
|
+
})
|
170
|
+
})
|
171
|
+
})
|
172
|
+
})
|
173
|
+
}
|
174
|
+
|
175
|
+
function extractTarGz (file, dir) {
|
176
|
+
return tar.x({ file: file, cwd: dir }).then(() => {
|
177
|
+
return new Promise((resolve, reject) => {
|
178
|
+
fs.unlink(file, err => {
|
179
|
+
if (err) reject(err)
|
180
|
+
resolve(dir)
|
181
|
+
})
|
182
|
+
})
|
183
|
+
})
|
184
|
+
}
|
185
|
+
|
186
|
+
function extract (file) {
|
187
|
+
var dirString = jdk? 'jdk' : 'jre';
|
188
|
+
|
189
|
+
const dir = path.join(path.dirname(file), dirString)
|
190
|
+
//console.log("About to extract "+file+" to "+dir);
|
191
|
+
return createDir(dir).then(() => {
|
192
|
+
return path.extname(file) === '.zip'
|
193
|
+
? extractZip(file, dir)
|
194
|
+
: extractTarGz(file, dir)
|
195
|
+
})
|
196
|
+
}
|
197
|
+
|
198
|
+
/**
|
199
|
+
* Installs a JRE copy for the app
|
200
|
+
* @param {number} [version = 8] - Java Version (`8`/`9`/`10`/`11`/`12`)
|
201
|
+
* @param {object} [options] - Installation Options
|
202
|
+
* @param {string} [options.os] - Operating System (defaults to current) (`windows`/`mac`/`linux`/`solaris`/`aix`)
|
203
|
+
* @param {string} [options.arch] - Architecture (defaults to current) (`x64`/`x32`/`ppc64`/`s390x`/`ppc64le`/`aarch64`/`sparcv9`)
|
204
|
+
* @param {string} [options.openjdk_impl = hotspot] - OpenJDK Implementation (`hotspot`/`openj9`)
|
205
|
+
* @param {string} [options.release = latest] - Release
|
206
|
+
* @param {string} [options.type = jre] - Binary Type (`jre`/`jdk`)
|
207
|
+
* @param {string} [options.heap_size] - Heap Size (`normal`/`large`)
|
208
|
+
* @return Promise<string> - Resolves to the installation directory or rejects an error
|
209
|
+
* @example
|
210
|
+
* const njre = require('njre')
|
211
|
+
*
|
212
|
+
* // Use default options
|
213
|
+
* njre.install()
|
214
|
+
* .then(dir => {
|
215
|
+
* // Do stuff
|
216
|
+
* })
|
217
|
+
* .catch(err => {
|
218
|
+
* // Handle the error
|
219
|
+
* })
|
220
|
+
*
|
221
|
+
* // or custom ones
|
222
|
+
* njre.install(11, { os: 'aix', arch: 'ppc64', openjdk_impl: 'openj9' })
|
223
|
+
* .then(dir => {
|
224
|
+
* // Do stuff
|
225
|
+
* })
|
226
|
+
* .catch(err => {
|
227
|
+
* // Handle the error
|
228
|
+
* })
|
229
|
+
*/
|
230
|
+
function install (version = 11, options = {}) {
|
231
|
+
const { openjdk_impl = 'hotspot', release = 'latest', type = 'jre', javafx = false, provider = 'zulu' } = options
|
232
|
+
options = { ...options, openjdk_impl, release, type }
|
233
|
+
|
234
|
+
if (provider === 'zulu') {
|
235
|
+
return installZulu(version, options);
|
236
|
+
}
|
237
|
+
|
238
|
+
let url = 'https://api.adoptopenjdk.net/v2/info/releases/openjdk' + version + '?'
|
239
|
+
|
240
|
+
if (!options.os) {
|
241
|
+
switch (process.platform) {
|
242
|
+
case 'aix':
|
243
|
+
options.os = 'aix'
|
244
|
+
break
|
245
|
+
case 'darwin':
|
246
|
+
options.os = 'mac'
|
247
|
+
break
|
248
|
+
case 'linux':
|
249
|
+
options.os = 'linux'
|
250
|
+
break
|
251
|
+
case 'sunos':
|
252
|
+
options.os = 'solaris'
|
253
|
+
break
|
254
|
+
case 'win32':
|
255
|
+
options.os = 'windows'
|
256
|
+
break
|
257
|
+
default:
|
258
|
+
return Promise.reject(new Error('Unsupported operating system'))
|
259
|
+
}
|
260
|
+
}
|
261
|
+
if (!options.arch) {
|
262
|
+
if (options.os == 'mac') {
|
263
|
+
// For now, for compatibility reasons use x64 always
|
264
|
+
options.arch = 'x64';
|
265
|
+
} else if (/^ppc64|s390x|x32|x64$/g.test(process.arch)) options.arch = process.arch
|
266
|
+
else if (process.arch === 'ia32') options.arch = 'x32'
|
267
|
+
else return Promise.reject(new Error('Unsupported architecture'))
|
268
|
+
}
|
269
|
+
|
270
|
+
Object.keys(options).forEach(key => { url += key + '=' + options[key] + '&' })
|
271
|
+
|
272
|
+
const tmpdir = path.join(os.tmpdir(), 'njre')
|
273
|
+
|
274
|
+
return fetch(url)
|
275
|
+
.then(response => response.json())
|
276
|
+
.then(json => downloadAll(tmpdir, json.binaries[0]['binary_link']))
|
277
|
+
.then(verify)
|
278
|
+
.then(move)
|
279
|
+
.then(extract)
|
280
|
+
}
|
281
|
+
|
282
|
+
function installZulu(version = 11, options = {}) {
|
283
|
+
const { type = 'jre', javafx = false } = options
|
284
|
+
var q = {
|
285
|
+
|
286
|
+
java_version: version,
|
287
|
+
ext: 'zip',
|
288
|
+
bundle_type: type,
|
289
|
+
javafx: ''+javafx,
|
290
|
+
arch: 'x86',
|
291
|
+
hw_bitness: '64',
|
292
|
+
|
293
|
+
};
|
294
|
+
|
295
|
+
|
296
|
+
var zuluBaseURL = "https://api.azul.com/zulu/download/community/v1.0/bundles/latest/binary?"
|
297
|
+
if (!options.os) {
|
298
|
+
switch (process.platform) {
|
299
|
+
|
300
|
+
case 'darwin':
|
301
|
+
q.os = 'macos'
|
302
|
+
break
|
303
|
+
case 'linux':
|
304
|
+
q.os = 'linux'
|
305
|
+
q.ext = 'tar.gz'
|
306
|
+
break
|
307
|
+
|
308
|
+
case 'win32':
|
309
|
+
case 'win64':
|
310
|
+
q.os = 'windows'
|
311
|
+
break
|
312
|
+
default:
|
313
|
+
return Promise.reject(new Error('Unsupported operating system'))
|
314
|
+
}
|
315
|
+
}
|
316
|
+
|
317
|
+
|
318
|
+
var url = zuluBaseURL;
|
319
|
+
Object.keys(q).forEach(key => { url += key + '=' + q[key] + '&' })
|
320
|
+
const tmpdir = path.join(os.tmpdir(), 'njre')
|
321
|
+
//console.log("Downloading "+url);
|
322
|
+
return download(tmpdir, url)
|
323
|
+
.then(move)
|
324
|
+
.then(extract)
|
325
|
+
|
326
|
+
}
|
327
|
+
|
328
|
+
return {install:install};
|
329
|
+
|
330
|
+
|
331
|
+
|
332
|
+
}
|
333
|
+
|
334
|
+
|
335
|
+
var fs = require('fs');
|
336
|
+
var os = require('os');
|
337
|
+
var path = require('path');
|
338
|
+
const njre = njreWrap();
|
339
|
+
const targetJavaVersion = parseInt(javaVersionString);
|
340
|
+
var shell = require("shelljs/global");
|
341
|
+
function getJdeploySupportDir() {
|
342
|
+
return os.homedir() + path.sep + ".jdeploy";
|
343
|
+
}
|
344
|
+
|
345
|
+
function getJavaVersion(binPath) {
|
346
|
+
|
347
|
+
var oldPath = env['PATH'];
|
348
|
+
if (binPath) {
|
349
|
+
env['PATH'] = binPath + path.delimiter + env['PATH'];
|
350
|
+
}
|
351
|
+
|
352
|
+
try {
|
353
|
+
var javaVersionProc = exec('java -version', {silent:true});
|
354
|
+
if (javaVersionProc.code !== 0) {
|
355
|
+
return false;
|
356
|
+
}
|
357
|
+
var stdout = javaVersionProc.stderr;
|
358
|
+
var regexp = /version "(.*?)"/;
|
359
|
+
var match = regexp.exec(stdout);
|
360
|
+
var parts = match[1].split('.');
|
361
|
+
var join = '.';
|
362
|
+
var versionStr = '';
|
363
|
+
parts.forEach(function(v) {
|
364
|
+
versionStr += v;
|
365
|
+
if (join !== null) {
|
366
|
+
versionStr += join;
|
367
|
+
join = null;
|
368
|
+
}
|
369
|
+
});
|
370
|
+
versionStr = versionStr.replace('_', '');
|
371
|
+
return parseFloat(versionStr);
|
372
|
+
} catch (e) {
|
373
|
+
return false;
|
374
|
+
} finally {
|
375
|
+
env['PATH'] = oldPath;
|
376
|
+
}
|
377
|
+
}
|
378
|
+
var getDirectories = dirPath => fs.readdirSync(dirPath).filter(
|
379
|
+
file => fs.statSync(path.join(dirPath, file)).isDirectory()
|
380
|
+
);
|
381
|
+
|
382
|
+
function getJavaHomeInPath(basepath) {
|
383
|
+
|
384
|
+
var dirs = null;
|
385
|
+
try {
|
386
|
+
dirs = getDirectories(basepath);
|
387
|
+
} catch (e) {
|
388
|
+
return null;
|
389
|
+
}
|
390
|
+
if (dirs && dirs.length > 0) {
|
391
|
+
basepath = path.join(basepath, dirs[0]);
|
392
|
+
if (os.platform() != 'darwin') {
|
393
|
+
return basepath;
|
394
|
+
}
|
395
|
+
if (fs.existsSync(path.join(basepath, 'Contents', 'Home'))) {
|
396
|
+
return path.join(basepath, 'Contents', 'Home');
|
397
|
+
}
|
398
|
+
|
399
|
+
var adapterDirectories = getDirectories(basepath).filter(subdir => {
|
400
|
+
return subdir.match(/^zulu/) && fs.existsSync(path.join(basepath, subdir, 'Contents', 'Home'));
|
401
|
+
});
|
402
|
+
|
403
|
+
if (adapterDirectories && adapterDirectories.length > 0) {
|
404
|
+
return path.join(basepath, adapterDirectories[0], 'Contents', 'Home');
|
405
|
+
}
|
406
|
+
}
|
407
|
+
return null;
|
408
|
+
}
|
409
|
+
|
410
|
+
function findSupportedRuntime(javaVersion, jdk, javafx) {
|
411
|
+
var jdeployDir = path.join(os.homedir(), ".jdeploy");
|
412
|
+
var JAVA_HOME_OVERRIDE = env['JDEPLOY_JAVA_HOME_OVERRIDE'];
|
413
|
+
|
414
|
+
if (JAVA_HOME_OVERRIDE && fs.existsSync(JAVA_HOME_OVERRIDE)) {
|
415
|
+
return JAVA_HOME_OVERRIDE;
|
416
|
+
}
|
417
|
+
|
418
|
+
// First check for the full-meal deal
|
419
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion+'fx', 'jdk'));
|
420
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
421
|
+
return _javaHomePath;
|
422
|
+
}
|
423
|
+
if (!javafx) {
|
424
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jdk', javaVersion, 'jdk'));
|
425
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
426
|
+
return _javaHomePath;
|
427
|
+
}
|
428
|
+
}
|
429
|
+
|
430
|
+
if (!jdk) {
|
431
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion+'fx', 'jre'));
|
432
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
433
|
+
return _javaHomePath;
|
434
|
+
}
|
435
|
+
}
|
436
|
+
|
437
|
+
if (!jdk && !javafx) {
|
438
|
+
var _javaHomePath = getJavaHomeInPath(path.join(jdeployDir, 'jre', javaVersion, 'jre'));
|
439
|
+
if (_javaHomePath && fs.existsSync(_javaHomePath)) {
|
440
|
+
return _javaHomePath;
|
441
|
+
}
|
442
|
+
}
|
443
|
+
return null;
|
444
|
+
|
445
|
+
}
|
446
|
+
|
447
|
+
function getEmbeddedJavaHome() {
|
448
|
+
var _platform = os.platform();
|
449
|
+
var _driver = '';
|
450
|
+
switch (_platform) {
|
451
|
+
case 'darwin': _platform = 'macosx'; _driver = 'Contents' + path.sep + 'Home'; break;
|
452
|
+
case 'win32': _platform = 'windows'; _driver = ''; break;
|
453
|
+
case 'linux': _driver = ''; break;
|
454
|
+
default:
|
455
|
+
fail('unsupported platform: ' + _platform);
|
456
|
+
}
|
457
|
+
var vs = javaVersionString;
|
458
|
+
if (javafx) {
|
459
|
+
vs += 'fx';
|
460
|
+
}
|
461
|
+
var typeDir = jdk ? 'jdk' : 'jre';
|
462
|
+
|
463
|
+
var jreDir = path.join(os.homedir(), '.jdeploy', 'jre', vs, 'jre');
|
464
|
+
try {
|
465
|
+
var out = jreDir + path.sep + getDirectories(jreDir)[0] + (_driver ? (path.sep + _driver) : '');
|
466
|
+
return out;
|
467
|
+
} catch (e) {
|
468
|
+
return null;
|
469
|
+
}
|
470
|
+
}
|
471
|
+
|
472
|
+
function javaVersionMatch(v1, v2) {
|
473
|
+
if (v1 === 8) v1 = 1.8;
|
474
|
+
if (v2 === 8) v2 = 1.8;
|
475
|
+
if (Math.floor(v1) !== Math.floor(v2)) {
|
476
|
+
|
477
|
+
return false;
|
478
|
+
}
|
479
|
+
if (v1 < 2) {
|
480
|
+
// Up to 1.8, the version would be like 1.7, 1.8, etc..
|
481
|
+
// So we need to check the minor version for equivalency
|
482
|
+
return (Math.floor(v1*10) === Math.floor(v2*10));
|
483
|
+
} else {
|
484
|
+
// Starting with Java 9, the version is like 9, 10, 11, etc..
|
485
|
+
// so we just compare major version.
|
486
|
+
return (Math.floor(v1) === Math.floor(v2));
|
487
|
+
}
|
488
|
+
|
489
|
+
}
|
490
|
+
|
491
|
+
var done = false;
|
492
|
+
if (tryJavaHomeFirst) {
|
493
|
+
if (env['JAVA_HOME']) {
|
494
|
+
var javaHomeVersion = getJavaVersion(path.join(env['JAVA_HOME'], 'bin'));
|
495
|
+
if (javaVersionMatch(javaHomeVersion, targetJavaVersion)) {
|
496
|
+
done = true;
|
497
|
+
env['PATH'] = path.join(env['JAVA_HOME'], 'bin') + path.delimiter + env['PATH'];
|
498
|
+
run(env['JAVA_HOME']);
|
499
|
+
|
500
|
+
}
|
501
|
+
}
|
502
|
+
|
503
|
+
if (!done) {
|
504
|
+
var javaVersion = getJavaVersion();
|
505
|
+
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
506
|
+
done = true;
|
507
|
+
run();
|
508
|
+
}
|
509
|
+
}
|
510
|
+
}
|
511
|
+
|
512
|
+
|
513
|
+
if (!done) {
|
514
|
+
|
515
|
+
var _javaHome = findSupportedRuntime(javaVersionString, bundleType === 'jdk', javafx);
|
516
|
+
if (_javaHome && fs.existsSync(_javaHome)) {
|
517
|
+
var javaVersion = getJavaVersion(path.join(_javaHome, 'bin'));
|
518
|
+
if (javaVersionMatch(javaVersion, targetJavaVersion)) {
|
519
|
+
env['PATH'] = path.join(_javaHome, 'bin') + path.delimiter + env['PATH'];
|
520
|
+
env['JAVA_HOME'] = _javaHome;
|
521
|
+
done = true;
|
522
|
+
run(_javaHome);
|
523
|
+
}
|
524
|
+
}
|
525
|
+
|
526
|
+
}
|
527
|
+
|
528
|
+
if (!done) {
|
529
|
+
console.log("Downloading java runtime environment for version "+targetJavaVersion);
|
530
|
+
njre.install(targetJavaVersion, {type: bundleType, javafx: javafx}).then(function(dir) {
|
531
|
+
var _javaHome = getJavaHomeInPath(dir);
|
532
|
+
if (_javaHome == null)
|
533
|
+
|
534
|
+
if (!_javaHome || !fs.existsSync(_javaHome)) {
|
535
|
+
throw new Error("After install, could not find java home at "+_javaHome);
|
536
|
+
}
|
537
|
+
env['JAVA_HOME'] = _javaHome;
|
538
|
+
|
539
|
+
var javaBinary = path.join(_javaHome, 'bin', 'java');
|
540
|
+
if (!fs.existsSync(javaBinary)) {
|
541
|
+
javaBinary += '.exe';
|
542
|
+
|
543
|
+
}
|
544
|
+
fs.chmodSync(javaBinary, 0o755);
|
545
|
+
|
546
|
+
env['PATH'] = path.join(env['JAVA_HOME'], 'bin') + path.delimiter + env['PATH'];
|
547
|
+
|
548
|
+
run(env['JAVA_HOME']);
|
549
|
+
}).catch(function(err) {
|
550
|
+
console.log("Failed to install JRE", err);
|
551
|
+
});
|
552
|
+
}
|
553
|
+
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
function run(_javaHome) {
|
558
|
+
var fail = reason => {
|
559
|
+
console.error(reason);
|
560
|
+
process.exit(1);
|
561
|
+
};
|
562
|
+
|
563
|
+
|
564
|
+
classPath = classPath.split(':');
|
565
|
+
var classPathStr = '';
|
566
|
+
var first = true;
|
567
|
+
classPath.forEach(function(part) {
|
568
|
+
if (!first) classPathStr += path.delimiter;
|
569
|
+
first = false;
|
570
|
+
classPathStr += __dirname + '/' + part;
|
571
|
+
});
|
572
|
+
classPath = classPathStr;
|
573
|
+
|
574
|
+
var userArgs = process.argv.slice(2);
|
575
|
+
var javaArgs = [];
|
576
|
+
javaArgs.push('-Djdeploy.base='+__dirname);
|
577
|
+
javaArgs.push('-Djdeploy.port='+port);
|
578
|
+
javaArgs.push('-Djdeploy.war.path='+warPath);
|
579
|
+
var programArgs = [];
|
580
|
+
userArgs.forEach(function(arg) {
|
581
|
+
if (arg.startsWith('-D') || arg.startsWith('-X')) {
|
582
|
+
javaArgs.push(arg);
|
583
|
+
} else {
|
584
|
+
programArgs.push(arg);
|
585
|
+
}
|
586
|
+
});
|
587
|
+
var cmd = 'java';
|
588
|
+
|
589
|
+
if (!_javaHome) {
|
590
|
+
env['PATH'] = path.join(getEmbeddedJavaHome(), 'bin') + path.delimiter + env['PATH'];
|
591
|
+
if (env['JAVA_HOME']) {
|
592
|
+
env['PATH'] = env['JAVA_HOME'] + path.sep + 'bin' + path.delimiter + env['PATH'];
|
593
|
+
}
|
594
|
+
|
595
|
+
} else {
|
596
|
+
env['JAVA_HOME'] = _javaHome;
|
597
|
+
cmd = _javaHome + path.sep + 'bin' + path.sep + 'java';
|
598
|
+
}
|
599
|
+
|
600
|
+
javaArgs.forEach(function(arg) {
|
601
|
+
cmd += ' "'+arg+'"';
|
602
|
+
});
|
603
|
+
if (jarName !== '{'+'{JAR_NAME}}') {
|
604
|
+
cmd += ' -jar "'+__dirname+'/'+jarName+'" ';
|
605
|
+
} else {
|
606
|
+
cmd += ' -cp "'+classPath+'" '+mainClass+' ';
|
607
|
+
}
|
608
|
+
|
609
|
+
programArgs.forEach(function(arg) {
|
610
|
+
cmd += ' "'+arg+'"';
|
611
|
+
});
|
612
|
+
var child = exec(cmd, {async: true});
|
613
|
+
process.stdin.setEncoding('utf8');
|
614
|
+
|
615
|
+
process.stdin.on('readable', function() {
|
616
|
+
var chunk = null;
|
617
|
+
while (null !== (chunk = process.stdin.read())) {
|
618
|
+
try {
|
619
|
+
child.stdin.write(chunk);
|
620
|
+
} catch(e){}
|
621
|
+
}
|
622
|
+
});
|
623
|
+
child.on('close', function(code) {
|
624
|
+
process.exit(code);
|
625
|
+
});
|
626
|
+
|
627
|
+
}
|
Binary file
|
package/package.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"bin":{"FasRh":"jdeploy-bundle/jdeploy.js"},"author":"Fasma, LDA","description":"Software de gestão de recursos humanos. Human Resources","main":"index.js","preferGlobal":true,"repository":"","version":"1.1.0","jdeploy":{"jdk":false,"checksums":{"icon.png":"d243862d993f8f26318c67638c322209","installsplash.png":"8b431e3c603d40231eaa2bca63e18a28"},"javaVersion":"23","urlSchemes":["fasrh"],"jar":"target/FasRh.jar","javafx":false,"title":"FasRh - Software de Gestão de Recursos Humanos"},"dependencies":{"command-exists-promise":"^2.0.2","node-fetch":"2.6.7","tar":"^4.4.8","yauzl":"^2.10.0","shelljs":"^0.8.4"},"license":"ISC","name":"fasrh","files":["jdeploy-bundle"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1"}}
|