feat: add components
This commit is contained in:
55
components/component-package.js
Normal file
55
components/component-package.js
Normal file
@@ -0,0 +1,55 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user