chainscript
Version:
Client for chainscript.io
86 lines (63 loc) • 2.33 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 _utilsHashPDF = require('../utils/hashPDF');
var _utilsHashPDF2 = _interopRequireDefault(_utilsHashPDF);
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] input [-- chainscript args]').option('-a, --algorithm <name>', 'hash algorithm (default sha256)').option('-r, --root <path>', 'JSON root path (default content.hash)').parse(args);
if (_commander2['default'].args.length !== 1) {
_commander2['default'].outputHelp();
process.exit(1);
}
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);
});
}
_utilsHashPDF2['default'](_path2['default'].resolve(process.cwd(), _commander2['default'].args[0]), _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);