UNPKG

generator-begcode

Version:

Spring Boot + Angular/React/Vue in one handy generator

114 lines (113 loc) 4.19 kB
import chalk from 'chalk'; import * as GENERATOR_LIST from '../generator-list.js'; import { PRIORITY_NAMES_LIST } from '../base-application/priorities.js'; const prioritiesForSub = (_subGen) => PRIORITY_NAMES_LIST; export const GENERATE_SNAPSHOTS = 'generateSnapshots'; export const LINK_JHIPSTER_DEPENDENCY = 'linkJhipsterDependency'; export const GENERATORS = 'generators'; export const SUB_GENERATORS = 'subGenerators'; export const ADDITIONAL_SUB_GENERATORS = 'additionalSubGenerators'; export const DYNAMIC = 'dynamic'; export const JS = 'js'; export const LOCAL_BLUEPRINT_OPTION = 'localBlueprint'; export const CLI_OPTION = 'cli'; export const SBS = 'sbs'; export const COMMAND = 'command'; export const PRIORITIES = 'priorities'; export const ALL_GENERATORS = 'allGenerators'; export const ALL_PRIORITIES = 'allPriorities'; export const WRITTEN = 'written'; export const requiredConfig = () => ({}); export const defaultConfig = ({ config = {} } = {}) => ({ ...requiredConfig, [DYNAMIC]: false, [JS]: !config[LOCAL_BLUEPRINT_OPTION], [LOCAL_BLUEPRINT_OPTION]: false, [CLI_OPTION]: !config[LOCAL_BLUEPRINT_OPTION], [SUB_GENERATORS]: [], [ADDITIONAL_SUB_GENERATORS]: '', }); export const defaultSubGeneratorConfig = () => ({ [SBS]: true, [COMMAND]: false, [WRITTEN]: false, [PRIORITIES]: [], }); const allSubGeneratorConfig = subGenerator => ({ [SBS]: true, [COMMAND]: false, [PRIORITIES]: prioritiesForSub(subGenerator), }); export const allGeneratorsConfig = () => ({ ...requiredConfig, [SUB_GENERATORS]: Object.values(GENERATOR_LIST), [ADDITIONAL_SUB_GENERATORS]: '', [DYNAMIC]: false, [JS]: true, [GENERATORS]: Object.fromEntries(Object.values(GENERATOR_LIST).map(subGenerator => [subGenerator, allSubGeneratorConfig(subGenerator)])), }); export const prompts = () => { const { [LOCAL_BLUEPRINT_OPTION]: LOCAL_BLUEPRINT_OPTION_DEFAULT_VALUE, [CLI_OPTION]: CLI_OPTION_DEFAULT_VALUE } = defaultConfig(); return [ { type: 'confirm', name: LOCAL_BLUEPRINT_OPTION, message: 'Do you want to generate a local blueprint inside your application?', default: LOCAL_BLUEPRINT_OPTION_DEFAULT_VALUE, }, { type: 'checkbox', name: SUB_GENERATORS, message: 'Which sub-generators do you want to override?', choices: Object.values(GENERATOR_LIST), pageSize: 30, loop: false, }, { type: 'input', name: ADDITIONAL_SUB_GENERATORS, message: 'Comma separated additional sub-generators.', validate: input => { if (input) { return /^([\w,-]*)$/.test(input) ? true : 'Please provide valid generator names'; } return true; }, }, { when: answers => !answers[LOCAL_BLUEPRINT_OPTION], type: 'confirm', name: CLI_OPTION, message: 'Add a cli?', default: CLI_OPTION_DEFAULT_VALUE, }, ]; }; export const subGeneratorPrompts = ({ subGenerator, additionalSubGenerator, localBlueprint }) => { const { [SBS]: SBS_DEFAULT_VALUE } = defaultSubGeneratorConfig(); return [ { type: 'confirm', name: SBS, when: !additionalSubGenerator, message: `Is ${chalk.yellow(subGenerator)} generator a side-by-side blueprint?`, default: SBS_DEFAULT_VALUE, }, { when: !localBlueprint, type: 'confirm', name: COMMAND, message: `Is ${chalk.yellow(subGenerator)} generator a cli command?`, default: false, }, { type: 'checkbox', name: PRIORITIES, message: `What task do you want do implement at ${chalk.yellow(subGenerator)} generator?`, choices: prioritiesForSub(subGenerator), pageSize: 30, default: answers => (answers.sbs || additionalSubGenerator ? [] : prioritiesForSub(subGenerator)), loop: false, }, ]; };