new-react-cli
Version:
A simple React CLI to generate components instantly and more.
47 lines (35 loc) • 1.41 kB
JavaScript
const { upperFirst } = require('lodash');
const {
generateComponent,
getComponentByType,
getCorrespondingComponentFileTypes,
} = require('../utils/generateComponentUtils');
function initGenerateComponentCommand(args, cliConfigFile, program) {
const selectedComponentType = getComponentByType(args, cliConfigFile);
const componentCommand = program
.command('component [names...]')
.alias('c')
// Static component command option defaults.
.option('-p, --path <path>', 'The path where the component will get generated in.', selectedComponentType.path)
.option(
'--type <type>',
'You can pass a component type that you have configured in your GRC config file.',
'default'
);
// Dynamic component command option defaults.
const dynamicOptions = getCorrespondingComponentFileTypes(selectedComponentType);
dynamicOptions.forEach((dynamicOption) => {
componentCommand.option(
`--${dynamicOption} <${dynamicOption}>`,
`With corresponding ${dynamicOption.split('with')[1]} file.`,
selectedComponentType[dynamicOption]
);
});
// Component command action.
componentCommand.action((componentNames, cmd) =>
componentNames.forEach((componentName) => generateComponent(upperFirst(componentName), cmd, cliConfigFile))
);
}
module.exports = {
initGenerateComponentCommand,
};