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