56 lines
2.4 KiB
JavaScript
56 lines
2.4 KiB
JavaScript
var counter = require('component-counter.js');
|
|
|
|
var getLocalPackage = (packageInfo, skipCertCheck) => {
|
|
var basePath = $$.file(packageInfo.basePath);
|
|
var bin = $$.file(basePath, packageInfo.subPath, packageInfo.bin);
|
|
if (!(bin.exists())) {
|
|
var packageFn = packageInfo.package.substring(packageInfo.package.lastIndexOf('/') + 1);
|
|
xprintln('[INFO] Package bin not exists, downloading...');
|
|
var packageFile = $$.file(basePath, packageFn);
|
|
packageFile.getAbsoluteFile().getParentFile().mkdirs();
|
|
var fos = new java.io.FileOutputStream(packageFile);
|
|
$$.httpRequest()
|
|
.url(packageInfo.package)
|
|
.addHeader('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36')
|
|
.skipCertCheck(!! skipCertCheck)
|
|
.get(fos, counter.getCounter2());
|
|
fos.close();
|
|
println();
|
|
|
|
var sha256 = $$.rFile(packageFile).digest($$.digests().sha256()).asHex();
|
|
if ($STR(sha256) == packageInfo.sha256) {
|
|
xprintln('[SUCCESS] Check SHA256 success: ' + packageFn);
|
|
} else {
|
|
xprintln('[ERROR] Check SHA256 failed, actual is: ' + sha256 + ',expected: ' + packageInfo.sha256 + ': ' + packageFn);
|
|
f.renameTo($$.file(basePath, packageFn + '.invalid.' + $$.date().millis()));
|
|
return null;
|
|
}
|
|
|
|
var installBuilderScripts = [];
|
|
installBuilderScripts.push('cd ' + packageInfo.basePath);
|
|
if (/.*\.tar\.gz$/.test(packageInfo.package) || /.*\.tgz$/.test(packageInfo.package)) {
|
|
installBuilderScripts.push('tar xzvf ' + packageFn);
|
|
} else if (/.*\.zip$/.test(packageInfo.package)) {
|
|
installBuilderScripts.push('unzip ' + packageFn);
|
|
} else {
|
|
xprintln('[ERROR] Extract package failed: ' + packageFn);
|
|
return;
|
|
}
|
|
installBuilderScripts.push('');
|
|
|
|
var builderIntall = $$.file('.builder_install.sh');
|
|
$$.rFile(builderIntall).write(installBuilderScripts.join('\n'));
|
|
$$.shell().inheritIO().commands('sh', builderIntall.getName()).run();
|
|
builderIntall.delete();
|
|
}
|
|
return {
|
|
'packageInfo': packageInfo,
|
|
'packageHome': $STR($$.file(packageInfo.basePath, packageInfo.subPath).getAbsolutePath()),
|
|
'binFile': bin
|
|
};
|
|
};
|
|
|
|
if (typeof exports == 'object') {
|
|
exports.getLocalPackage = getLocalPackage;
|
|
}
|