UNPKG

chainscript

Version:
233 lines (175 loc) 6.42 kB
'use strict'; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); var _objectPath = require('object-path'); var _objectPath2 = _interopRequireDefault(_objectPath); var _bitcore = require('bitcore'); var _bitcore2 = _interopRequireDefault(_bitcore); var _mergeDeep = require('merge-deep'); var _mergeDeep2 = _interopRequireDefault(_mergeDeep); var _utilsReadPackageSync = require('../utils/readPackageSync'); var _utilsReadPackageSync2 = _interopRequireDefault(_utilsReadPackageSync); var _ = require('..'); var _2 = _interopRequireDefault(_); function collectUpdates(val, memo) { memo.push(val); return memo; } function collectUpdateKeys(val, memo) { memo.push(val); return memo; } function parseBool(v) { return v === 'true' || v === '1' ? true : false; } _commander2['default'].version(_utilsReadPackageSync2['default']('version')).usage('[options] [script | uuid]').option('-u, --update <updates>', 'Update script', collectUpdates, []).option('-U, --update-key <key:value>', 'Update specific content key', collectUpdateKeys, []).option('-s, --snapshot', 'Snapshot script').option('-n, --notarize', 'Notarize script').option('-e, --email <address>', 'Email').option('--subject <subject>', 'Email subject').option('-g, --get <path>', 'Output value at path').option('-S, --sign <wif>', 'Sign the digest').option('--command-auditing <bool>', 'Enable or disable command auditing', parseBool).option('--revision-auditing <bool>', 'Enable or disable revision auditing', parseBool).option('-K, --gen-key', 'Generate and print a key pair and address').option('-T, --testnet', 'Use testnet').option('--execute-url <url>', 'Set execute url').option('--snapshots-url <url>', 'Set snapshots url').parse(process.argv); function handleOutput(o) { var output = _commander2['default'].get ? _objectPath2['default'].get(output, _commander2['default'].get) : o; var str = undefined; if (typeof output === 'object' && output) { str = JSON.stringify(output, null, '\t') + '\n'; } else { str = output + '\n'; } process.stdout.write(str, function () { return process.exit(0); }); } function handleError(err) { process.stderr.write(err.message + '\n', function () { return process.exit(1); }); } function stage0(cs) { if (typeof cs.get('x_chainscript') === 'undefined') { return cs.run(); } return Promise.resolve(cs); } function stage1(cs) { var s = cs; if (typeof _commander2['default'].commandAuditing !== 'undefined') { s = s.set('x_chainscript.command_auditing', _commander2['default'].commandAuditing); } if (typeof _commander2['default'].revisionAuditing !== 'undefined') { s = s.set('x_chainscript.revision_auditing', _commander2['default'].revisionAuditing); } if (_commander2['default'].update.length > 0 || _commander2['default'].updateKey.length > 0) { var _ret = (function () { var updates = undefined; _commander2['default'].update.forEach(function (u) { var update = undefined; try { update = JSON.parse(u); } catch (e) { update = u; } if (typeof updates === 'object' && updates && typeof update === 'object' && update) { updates = _mergeDeep2['default'](updates, update); } else { updates = update; } }); _commander2['default'].updateKey.forEach(function (update) { var parts = update.split(':'); var key = parts[0]; var raw = parts.slice(1).join(':'); var value = {}; try { _objectPath2['default'].set(value, key, JSON.parse(raw)); } catch (e) { _objectPath2['default'].set(value, key, raw); } updates = _mergeDeep2['default'](updates, value); }); return { v: s.update(updates).run() }; })(); if (typeof _ret === 'object') return _ret.v; } return Promise.resolve(s); } function stage2(cs) { var s = cs; if (_commander2['default'].sign) { s = s.sign(_commander2['default'].sign); } if (_commander2['default'].snapshot) { s = s.snapshot(); } if (_commander2['default'].notarize) { s = s.notarize(); } if (_commander2['default'].email) { s = s.email(_commander2['default'].email, _commander2['default'].subject); } return s.run(); } function run(cs) { if (typeof _commander2['default'].executeUrl !== 'undefined') { _2['default'].EXECUTE_URL = _commander2['default'].executeUrl; } if (typeof _commander2['default'].snapshotsUrl !== 'undefined') { _2['default'].SNAPSHOTS_URL = _commander2['default'].snapshotsUrl; } stage0(cs).then(stage1).then(stage2).then(function (s) { return handleOutput(s.toJSON()); })['catch'](handleError); } function handleInput(input) { if (input.match(/^chainscript:/)) { _2['default'].load(input, true).then(run)['catch'](handleError); } else { var json = undefined; try { json = JSON.parse(input); } catch (e) { json = { content: input }; } run(new _2['default'](json, true)); } } if (_commander2['default'].genKey) { var privateKey = new _bitcore2['default'].PrivateKey(); var publicKey = privateKey.toPublicKey(); var address = undefined; if (_commander2['default'].testnet) { address = publicKey.toAddress(_bitcore2['default'].Networks.testnet); } else { address = publicKey.toAddress(_bitcore2['default'].Networks.livenet); } handleOutput({ 'private': privateKey.toWIF(), 'public': publicKey.toString(), address: address.toString() }); } if (_commander2['default'].args.length > 1) { _commander2['default'].outputHelp(); process.exit(1); } if (_commander2['default'].args.length === 0) { (function () { process.stdin.setEncoding('utf8'); var input = ''; process.stdin.on('readable', function () { var chunk = process.stdin.read(); if (chunk !== null) { input += chunk.toString(); } }); process.stdin.on('end', function () { input = input.replace(/\n$/, ''); if (input.length) { handleInput(input); } else { _commander2['default'].outputHelp(); process.exit(1); } }); })(); } else { handleInput(_commander2['default'].args[0]); }