hades-cli
Version:
Hades CLI developer tool
71 lines (70 loc) • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@oclif/command");
const types_1 = require("./../@cliter/types");
const utils_1 = require("./../@cliter/utils");
const fs = require("fs");
const chalk = require("chalk");
const path = require("path");
const emoji = require("node-emoji");
const logSymbols = require("log-symbols");
const shell = require("shelljs");
const ora = require("ora");
class Seed extends command_1.Command {
async run() {
const { args, flags } = this.parse(Seed);
if (args.elementType === 'b')
args.elementType = 'bounded-context';
if (args.elementType === 'm')
args.elementType = 'module';
if (args.elementType === types_1.TemplateElement.MODULE) {
let moduleFlag = {};
if (flags.module)
moduleFlag = utils_1.Operations.parseFlagOfBoundedContextAndModule(this, flags.module);
const { boundedContextName, moduleName } = await utils_1.Prompter.promptForSeedModule(moduleFlag === null || moduleFlag === void 0 ? void 0 : moduleFlag.boundedContextName, moduleFlag === null || moduleFlag === void 0 ? void 0 : moduleFlag.moduleName);
const seederPath = path.join('src', 'apps', boundedContextName, moduleName, 'seeder', 'seeder.ts');
// check if seeder class exists in framework tree folders
if (fs.existsSync(path.join(process.cwd(), seederPath))) {
const environmentSpinner = ora('Creating environment').start();
shell.exec(`ts-node -r tsconfig-paths/register ${seederPath}`, { silent: !flags.log, async: true }, () => {
environmentSpinner.succeed('Environment created');
this.log(`%s %s Module seed ${moduleName} has been loaded %s`, chalk.green.bold('DONE'), emoji.get('open_file_folder'), logSymbols.success);
});
}
else {
this.log(`%s Module ${moduleName} does not contain seed to run %s`, chalk.yellow.bold('WARNING'), logSymbols.warning);
}
}
if (args.elementType.toSnakeCase() === types_1.TemplateElement.BOUNDED_CONTEXT) {
const { boundedContextName } = await utils_1.Prompter.promptForSeedBoundedContext(flags.boundedContext);
const seederPath = path.join('src', 'apps', boundedContextName, 'seeder', 'seeder.ts');
// check if seeder class exists in framework tree folders
if (fs.existsSync(path.join(process.cwd(), seederPath))) {
const environmentSpinner = ora('Creating environment').start();
shell.exec(`ts-node -r tsconfig-paths/register ${seederPath}`, { silent: !flags.log, async: true }, () => {
environmentSpinner.succeed('Environment created');
this.log(`%s %s Bounded Context seed ${boundedContextName} has been loaded %s`, chalk.green.bold('DONE'), emoji.get('open_file_folder'), logSymbols.success);
});
}
else {
this.log(`%s Bounded Context ${boundedContextName} does not contain seed to run %s`, chalk.yellow.bold('WARNING'), logSymbols.warning);
}
}
}
}
exports.default = Seed;
Seed.description = 'Seed database with bounded context or module selected';
Seed.flags = {
help: command_1.flags.help({ char: 'h' }),
module: command_1.flags.string({ char: 'm' }),
boundedContext: command_1.flags.string({ char: 'b' }),
log: command_1.flags.boolean({ char: 'l' }),
};
Seed.args = [
{
name: 'elementType',
required: true,
description: 'Type element to create',
options: ['bounded-context', 'b', 'module', 'm']
}
];