@easy-breezy/core
Version:
Command line root module
54 lines (53 loc) • 2.07 kB
JavaScript
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();