Skip to content

Commit bff35ab

Browse files
committed
Addressed review comment
1 parent 49c4e0c commit bff35ab

2 files changed

Lines changed: 26 additions & 27 deletions

File tree

src/bin-support.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ async function runTransform(binRoot, transformName, args, extensions = DEFAULT_E
77
const execa = require('execa');
88
const chalk = require('chalk');
99
const path = require('path');
10-
const { parseTransformArgs, extractJSCodeShiftOptions } = require('./options-support');
10+
const { parseTransformArgs } = require('./options-support');
1111

12-
let { paths, options } = parseTransformArgs(args);
13-
let { cliOptions, jsCodeShiftOptions } = extractJSCodeShiftOptions(options);
12+
let { paths, options, transformerOptions } = parseTransformArgs(args);
1413

1514
try {
1615
let foundPaths = await globby(paths, {
@@ -27,14 +26,14 @@ async function runTransform(binRoot, transformName, args, extensions = DEFAULT_E
2726
transformPath,
2827
'--extensions',
2928
extensions,
30-
...jsCodeShiftOptions,
29+
...transformerOptions,
3130
...foundPaths,
3231
];
3332

3433
return execa(binPath, binOptions, {
3534
stdio: 'inherit',
3635
env: {
37-
CODEMOD_CLI_ARGS: JSON.stringify(cliOptions),
36+
CODEMOD_CLI_ARGS: JSON.stringify(options),
3837
},
3938
});
4039
} catch (error) {

src/options-support.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,30 @@ const yargs = require('yargs');
22

33
const jsCodeShiftOptions = ['ignore-config', 'ignore-pattern'];
44

5-
function parseTransformArgs(args) {
5+
function parseTransformArgs(args, codeShiftOptions = jsCodeShiftOptions) {
66
let parsedArgs = yargs.parse(args);
77
let paths = parsedArgs._;
8-
let options = Object.keys(parsedArgs).reduce((acc, key) => {
9-
if (!['_', '$0', 'help', 'version'].includes(key)) {
10-
acc[key] = parsedArgs[key];
8+
let { options, transformerOptions } = Object.keys(parsedArgs).reduce(
9+
(acc, key) => {
10+
if (!['_', '$0', 'help', 'version'].includes(key)) {
11+
let KeyInkebabCase = key.replace(
12+
/([a-z])([A-Z])/g,
13+
(_, $1, $2) => `${$1}-${$2.toLowerCase()}`
14+
);
15+
if (codeShiftOptions.includes(key)) {
16+
acc.transformerOptions.push(`--${key}`, parsedArgs[key]);
17+
} else if (!codeShiftOptions.includes(KeyInkebabCase)) {
18+
acc.options[key] = parsedArgs[key];
19+
}
20+
}
21+
return acc;
22+
},
23+
{
24+
options: {},
25+
transformerOptions: [],
1126
}
12-
return acc;
13-
}, {});
14-
return { paths, options };
27+
);
28+
return { paths, options, transformerOptions };
1529
}
1630

1731
function getOptions() {
@@ -22,18 +36,4 @@ function getOptions() {
2236
}
2337
}
2438

25-
function extractJSCodeShiftOptions(options, codeShiftOptions = jsCodeShiftOptions) {
26-
let cliOptions = Object.assign({}, options);
27-
let jsCodeShiftOptions = [];
28-
codeShiftOptions.forEach(option => {
29-
if (Object.prototype.hasOwnProperty.call(cliOptions, option)) {
30-
let camelCaseOption = option.replace(/-([a-z])/g, (_, up) => up.toUpperCase());
31-
jsCodeShiftOptions.push(`--${option}`, options[option]);
32-
delete cliOptions[option];
33-
delete cliOptions[camelCaseOption];
34-
}
35-
});
36-
return { cliOptions, jsCodeShiftOptions };
37-
}
38-
39-
module.exports = { parseTransformArgs, getOptions, extractJSCodeShiftOptions };
39+
module.exports = { parseTransformArgs, getOptions };

0 commit comments

Comments
 (0)