chainscript
Version:
Client for chainscript.io
90 lines (67 loc) • 2.38 kB
JavaScript
;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _child_process = require('child_process');
var _commander = require('commander');
var _commander2 = _interopRequireDefault(_commander);
var _utilsReadPackageSync = require('../utils/readPackageSync');
var _utilsReadPackageSync2 = _interopRequireDefault(_utilsReadPackageSync);
var _utilsHashFiles = require('../utils/hashFiles');
var _utilsHashFiles2 = _interopRequireDefault(_utilsHashFiles);
var paths = undefined;
var args = [];
var chainscriptArgs = [];
var execChainscript = false;
process.argv.forEach(function (arg) {
if (arg === '--') {
execChainscript = true;
return;
}
if (execChainscript) {
chainscriptArgs.push(arg);
} else {
args.push(arg);
}
});
_commander2['default'].version(_utilsReadPackageSync2['default']('version')).usage('[options] [path...] [-- chainscript args]').option('-a, --algorithm <name>', 'hash algorithm (default sha256)').option('-r, --root <path>', 'JSON root path').parse(args);
if (_commander2['default'].args.length > 0) {
paths = _commander2['default'].args.map(function (p) {
return _path2['default'].resolve(process.cwd(), p);
});
} else {
paths = [process.cwd()];
}
function handleOutput(output) {
var str = JSON.stringify(output, null, '\t') + '\n';
process.stdout.write(str, function () {
return process.exit(0);
});
}
function handleError(err) {
process.stderr.write(err.message + '\n', function () {
return process.exit(1);
});
}
_utilsHashFiles2['default'](process.cwd(), paths, _commander2['default'].algorithm, _commander2['default'].root).then(function (json) {
if (execChainscript) {
var hasAt = false;
chainscriptArgs = chainscriptArgs.map(function (arg) {
if (arg === '@') {
hasAt = true;
return JSON.stringify(json);
}
return arg;
});
try {
_child_process.execFileSync(_path2['default'].resolve(__dirname, '../../bin/chainscript'), chainscriptArgs, {
input: hasAt ? null : JSON.stringify(json),
stdio: [hasAt ? process.stdin : 'pipe', process.stdout, process.stderr]
});
} catch (err) {
handleError(err);
}
return;
}
handleOutput(json);
})['catch'](handleError);