Skip to content

Commit 175cdf5

Browse files
committed
Better parameter validation for interactive config, closes #155
1 parent 6d974a0 commit 175cdf5

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

src/commands/config.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,23 @@ const inquirer = require('inquirer');
77
const validate = input => input && input.length > 0;
88
const filter = input => (input ? input.trim() : '');
99

10+
const pairValidation = input => {
11+
if (!input) {
12+
return true;
13+
}
14+
15+
const pairs = input.split(',');
16+
const res = pairs.map(pair => {
17+
const s = pair.split('=');
18+
const [key, val] = s;
19+
return key && val;
20+
});
21+
if (res.some(r => !r)) {
22+
return `Value should be specified in 'key=val,key2=val2' format!`;
23+
}
24+
return true;
25+
};
26+
1027
exports.command = ['config', 'init'];
1128
exports.describe = 'generate new config file for current project';
1229
exports.builder = {};
@@ -79,6 +96,7 @@ exports.handler = async () => {
7996
.join(', ')
8097
: '',
8198
filter,
99+
validate: pairValidation,
82100
});
83101
prompts.push({
84102
type: 'input',
@@ -90,6 +108,7 @@ exports.handler = async () => {
90108
.join(', ')
91109
: '',
92110
filter,
111+
validate: pairValidation,
93112
});
94113
prompts.push({
95114
type: 'confirm',
@@ -102,23 +121,23 @@ exports.handler = async () => {
102121
name: 'ratelimitPeriod',
103122
message: 'Rate-limit period (in seconds)',
104123
default: defaultConfig.rateLimit ? defaultConfig.rateLimit.period.replace('s', '') : '1',
105-
filter: val => `${val.trim()}s`,
124+
filter: val => `${val}s`,
106125
when: ({enableRatelimit}) => enableRatelimit,
107126
});
108127
prompts.push({
109128
type: 'input',
110129
name: 'ratelimitAverage',
111130
message: 'Rate-limit average request rate',
112131
default: defaultConfig.rateLimit ? defaultConfig.rateLimit.average : '1',
113-
filter: val => Number(val.trim()),
132+
filter: val => Number(val),
114133
when: ({enableRatelimit}) => enableRatelimit,
115134
});
116135
prompts.push({
117136
type: 'input',
118137
name: 'ratelimitBurst',
119138
message: 'Rate-limit burst request rate',
120139
default: defaultConfig.rateLimit ? defaultConfig.rateLimit.burst : '5',
121-
filter: val => Number(val.trim()),
140+
filter: val => Number(val),
122141
when: ({enableRatelimit}) => enableRatelimit,
123142
});
124143
prompts.push({

0 commit comments

Comments
 (0)