make-react-component
Version:
Generate react and react-native components.
45 lines (40 loc) • 1.55 kB
text/typescript
import { OptionDefinition } from 'command-line-args';
import { templateOptions } from './templates';
import { TemplateOption } from './templates/types';
// Allow for options to filter different types of templates
// Web | Native | Class | Functional | Specialty | JS | TS
export const optionDefs: OptionDefinition[] = [
{ name: 'yes', alias: 'y', type: Boolean, defaultValue: false }, // Remove Later when options are probably parsed
// { name: 'web', alias: 'w', type: Boolean, defaultValue: false },
// { name: 'native', alias: 'n', type: Boolean, defaultValue: false },
// { name: 'class', alias: 'c', type: Boolean, defaultValue: false },
// { name: 'function', alias: 'f', type: Boolean, defaultValue: false },
// { name: 'spec', alias: 's', type: Boolean, defaultValue: false },
// { name: 'javascript', alias: 'js', type: Boolean, defaultValue: false },
// { name: 'typeScript', alias: 'ts', type: Boolean, defaultValue: false }
];
export const defaults = {
defaultTemplate: `[${templateOptions[0].alias}]: ${templateOptions[0].description}`
};
const diplayTemplateOptions = () => {
return templateOptions.map((opt: TemplateOption) => {
return `[${opt.alias}]: ${opt.description}`;
});
};
export const mainPrompts = [
{
name: 'template',
message: `Choose a template: \n\n`,
choices: diplayTemplateOptions(),
type: 'list',
default: defaults.defaultTemplate,
loop: false
}
];
export const confirmPrompt = [
{
name: 'okay',
message: 'Is this OK?',
type: 'confirm'
}
];