feat: add components

This commit is contained in:
2025-04-04 17:19:07 +08:00
parent 6f494ec9ca
commit c37b9f0ab2
40 changed files with 2088 additions and 0 deletions

View 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;
}