feat: scripts
This commit is contained in:
96
scripts/makeself.js
Normal file
96
scripts/makeself.js
Normal file
@@ -0,0 +1,96 @@
|
||||
#! /usr/bin/env runjs
|
||||
|
||||
var argsjs = require('component-args.js');
|
||||
var packagejs = require('component-package.js');
|
||||
var filesystemjs = require('component-filesystem.js');
|
||||
|
||||
var MAKESELF_PACKAGE_INFO = {
|
||||
'package': 'https://publicbucket-1251781687.coscd.myqcloud.com/makeself-2.4.0.tar.gz',
|
||||
//'package': 'https://playsecurity.org/getdoc/2552_C2AE09CBA9C18B4B9E5472E0C2304C74/makeself-2.4.0.tar.gz',
|
||||
'sha256': '76a8c3f3fad1b55c39ba2904a19e74962151f9481df03091d4e54938bdd13f50',
|
||||
'basePath': '~/.jssp/builder/makeself-2.4.0',
|
||||
'subPath': 'makeself-release-2.4.0',
|
||||
'bin': 'makeself.sh'
|
||||
};
|
||||
var MAKESELF_PACKAGE_INFO_v230 = {
|
||||
'package': 'https://publicbucket-1251781687.coscd.myqcloud.com/makeself-2.3.0.tar.gz',
|
||||
//'package': 'https://playsecurity.org/getdoc/1628_C2F12AFBC92C8A19A2E914B457AD053E/makeself-2.3.0.tar.gz',
|
||||
'sha256': '87385ed878938c4cd6907d1401ec6ba5bee2224fb97f7865a11e617bf94d4a0b',
|
||||
'basePath': '~/.jssp/builder/makeself-2.3.0',
|
||||
'subPath': 'makeself-2.3.0',
|
||||
'bin': 'makeself.sh'
|
||||
};
|
||||
|
||||
var sampleMakeselfJSON = {
|
||||
"files": [
|
||||
"file1.txt",
|
||||
"file2.txt"
|
||||
],
|
||||
"target": {
|
||||
"options": [ "--sha256" ], // https://makeself.io/
|
||||
"fileName": "sample.sh",
|
||||
"label": "sample label",
|
||||
"startupScript": "./startup.sh",
|
||||
"startupScriptArgs": []
|
||||
}
|
||||
};
|
||||
|
||||
var main = () => {
|
||||
var args = argsjs.parseDefARGs();
|
||||
|
||||
var makeself = $$.file(args.val('c', 'config') || 'makeself.json');
|
||||
if (!(makeself.exists())) {
|
||||
xprintln('[ERROR] Cannot find file `makeself.json`.');
|
||||
xprintln('[INFO] Sample: ' + $$.stringify($$.parseJSON(JSON.stringify(sampleMakeselfJSON)), true));
|
||||
return;
|
||||
}
|
||||
var makeselfJSON = JSON.parse($$.rFile(makeself).string());
|
||||
|
||||
xprintln('[INFO] Get makeself.sh local package info.');
|
||||
var makeselfLocalPackage = packagejs.getLocalPackage(MAKESELF_PACKAGE_INFO, true);
|
||||
|
||||
xprintln('[INFO] Check local temp dir: .makeself_js_temp_dir');
|
||||
var tempPath = $$.file('.makeself_js_temp_dir');
|
||||
if (tempPath.exists()) { __.fileutil.deleteDirectory(tempPath); }
|
||||
tempPath.mkdirs();
|
||||
|
||||
var abort = false;
|
||||
makeselfJSON.files.forEach((fn) => {
|
||||
if (abort) { return; }
|
||||
var f = $$.file(fn);
|
||||
if (!f.exists()) {
|
||||
abort = true;
|
||||
xprintln('[ERROR] File not exists: ' + fn);
|
||||
return;
|
||||
}
|
||||
xprintln('[INFO] Copy file: ' + fn);
|
||||
__.ioutil.copyFile(f, $$.file(tempPath, f.getName()));
|
||||
|
||||
if ((makeselfJSON.target.startupScript == $STR(f.getName())) || (makeselfJSON.target.startupScript == $STR('./' + f.getName()))) {
|
||||
xprintln('[INFO] Set file executable: ' + fn);
|
||||
filesystemjs.chmodAddExec($$.file(tempPath, f.getName()));
|
||||
}
|
||||
});
|
||||
if (abort) { return; }
|
||||
|
||||
if (makeselfJSON.target == null) { makeselfJSON.target = {}; }
|
||||
var makeselfCommands = [ makeselfLocalPackage.binFile.getAbsolutePath() ];
|
||||
if (makeselfJSON.target.options) {
|
||||
makeselfCommands = makeselfCommands.concat(makeselfJSON.target.options);
|
||||
}
|
||||
makeselfCommands = makeselfCommands.concat(['.makeself_js_temp_dir',
|
||||
makeselfJSON.target.fileName || 'unnamed.sh',
|
||||
makeselfJSON.target.label || '',
|
||||
makeselfJSON.target.startupScript
|
||||
]);
|
||||
if (makeselfJSON.target.startupScriptArgs) {
|
||||
makeselfJSON.target.startupScriptArgs.forEach((a) => { makeselfCommands.push(a); });
|
||||
}
|
||||
|
||||
$$.shell().inheritIO().commands(makeselfCommands).run();
|
||||
|
||||
xprintln('[INFO] Clean up local temp dir: .makeself_js_temp_dir');
|
||||
if (tempPath.exists()) { __.fileutil.deleteDirectory(tempPath); }
|
||||
};
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user