src/lib/commands/generate/options.js
import commandLineArgs from 'command-line-args';
import chalk from 'chalk';
import { trim } from 'lodash';
import help from './help';
import optionDefinitions from './option-definitions';
/**
* Get generate options from argv
* @param {string[]} argv cli argv
* @return {Object} run options
* @property {string} seederName
* @property {boolean} helpWanted
*/
export const getOptions = argv => {
const {
name: seederName,
help: helpWanted,
} = commandLineArgs(optionDefinitions, { argv });
const options = { seederName, helpWanted };
validateOptions(options);
return options;
};
/**
* Validate generate command options
* @param {Object} [options={}] Options
* @param {string} options.seederName seeder name to generate
* @param {boolean} options.helpWanted help wanted?
* @throws {Error} throw error when options are not valid.
*/
export const validateOptions = ({ seederName, helpWanted } = {}) => {
if (
!helpWanted &&
(typeof seederName !== 'string' || trim(seederName).length < 3)
) {
console.log(`${chalk.red('ERROR')} Please choose a seeder name`);
console.log();
help();
throw new Error('exit');
}
};