cli: parse json params

This commit is contained in:
Braydon Fuller 2016-06-03 15:41:14 -04:00
parent e87f628e7a
commit 61caf6974a
3 changed files with 34 additions and 1 deletions

View File

@ -3,6 +3,7 @@
var program = require('commander');
var path = require('path');
var bitcorenode = require('..');
var utils = require('../utils');
function main(servicesPath, additionalServices) {
/* jshint maxstatements: 100 */
@ -124,7 +125,8 @@ function main(servicesPath, additionalServices) {
program
.command('call <method> [params...]')
.description('Call an API method')
.action(function(method, params) {
.action(function(method, paramsArg) {
var params = utils.parseParamsWithJSON(paramsArg);
var configInfo = findConfig(process.cwd());
if (!configInfo) {
configInfo = defaultConfig();

View File

@ -26,4 +26,17 @@ if (!utils.isAbsolutePath) {
utils.isAbsolutePath = require('path-is-absolute');
}
utils.parseParamsWithJSON = function parseParamsWithJSON(paramsArg) {
var params = paramsArg.map(function(paramArg) {
var param;
try {
param = JSON.parse(paramArg);
} catch(err) {
param = paramArg;
}
return param;
});
return params;
};
module.exports = utils;

View File

@ -130,4 +130,22 @@ describe('Utils', function() {
});
describe('#parseParamsWithJSON', function() {
it('will parse object', function() {
var paramsArg = ['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', '{"start": 100, "end": 1}'];
var params = utils.parseParamsWithJSON(paramsArg);
params.should.deep.equal(['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', {start: 100, end: 1}]);
});
it('will parse array', function() {
var paramsArg = ['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', '[0, 1]'];
var params = utils.parseParamsWithJSON(paramsArg);
params.should.deep.equal(['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', [0, 1]]);
});
it('will parse numbers', function() {
var paramsArg = ['3', 0, 'b', '0', 0x12, '0.0001'];
var params = utils.parseParamsWithJSON(paramsArg);
params.should.deep.equal([3, 0, 'b', 0, 0x12, 0.0001]);
});
});
});