Skip to content

Commit 4e78500

Browse files
authored
Merge pull request #440 from braydonf/cli-json
cli: parse json params
2 parents 8f9af82 + 61caf69 commit 4e78500

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

lib/cli/main.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
var program = require('commander');
44
var path = require('path');
55
var bitcorenode = require('..');
6+
var utils = require('../utils');
67

78
function main(servicesPath, additionalServices) {
89
/* jshint maxstatements: 100 */
@@ -124,7 +125,8 @@ function main(servicesPath, additionalServices) {
124125
program
125126
.command('call <method> [params...]')
126127
.description('Call an API method')
127-
.action(function(method, params) {
128+
.action(function(method, paramsArg) {
129+
var params = utils.parseParamsWithJSON(paramsArg);
128130
var configInfo = findConfig(process.cwd());
129131
if (!configInfo) {
130132
configInfo = defaultConfig();

lib/utils.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,17 @@ if (!utils.isAbsolutePath) {
2626
utils.isAbsolutePath = require('path-is-absolute');
2727
}
2828

29+
utils.parseParamsWithJSON = function parseParamsWithJSON(paramsArg) {
30+
var params = paramsArg.map(function(paramArg) {
31+
var param;
32+
try {
33+
param = JSON.parse(paramArg);
34+
} catch(err) {
35+
param = paramArg;
36+
}
37+
return param;
38+
});
39+
return params;
40+
};
41+
2942
module.exports = utils;

test/utils.unit.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,22 @@ describe('Utils', function() {
130130

131131
});
132132

133+
describe('#parseParamsWithJSON', function() {
134+
it('will parse object', function() {
135+
var paramsArg = ['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', '{"start": 100, "end": 1}'];
136+
var params = utils.parseParamsWithJSON(paramsArg);
137+
params.should.deep.equal(['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', {start: 100, end: 1}]);
138+
});
139+
it('will parse array', function() {
140+
var paramsArg = ['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', '[0, 1]'];
141+
var params = utils.parseParamsWithJSON(paramsArg);
142+
params.should.deep.equal(['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou', [0, 1]]);
143+
});
144+
it('will parse numbers', function() {
145+
var paramsArg = ['3', 0, 'b', '0', 0x12, '0.0001'];
146+
var params = utils.parseParamsWithJSON(paramsArg);
147+
params.should.deep.equal([3, 0, 'b', 0, 0x12, 0.0001]);
148+
});
149+
});
150+
133151
});

0 commit comments

Comments
 (0)