UNPKG

@easy-breezy/core

Version:
54 lines (53 loc) 2.07 kB
import enquirer from 'enquirer'; import args from './../args/index.js'; import i18n from './../i18n/index.js'; import config from './../config/index.js'; import fs from './../fs/index.js'; import colors from './../colors/index.js'; import output from './../output/index.js'; class Generator { name = args.opts.generator; generators = {}; run = async () => { if (!this.name) { const generators = config.get('generators'); if (generators) { const keys = Object.keys(generators); if (keys.length) { const choices = []; for (const key of keys) { const { default: module } = await import(`@easy-breezy/generator-${key}`); const generator = this.generators[key] = module({ i18n: { addResource: (lang, payload) => i18n.addResource(lang, key, payload), t: i18n.bindT(key) }, config: { get: config.bindGet(`generators.${key}`), set: config.bindSet(`generators.${key}`) }, output, colors, fs }); choices.push({ name: key, message: generator.message }); } const { generator } = await enquirer.prompt({ type: 'select', name: 'generator', message: i18n.t('generator.question.generator'), choices }); this.name = generator; } } } if (this.name) { await this.generators[this.name].run(); } }; } export default new Generator();