exponic
Version:
A lightning-fast CLI for scaffolding Node.js and Express.js projects.
50 lines (43 loc) • 1.37 kB
JavaScript
import chalk from 'chalk';
import fs from 'fs/promises';
import { basicControllerText } from '../contents/controller.js';
import {
checkFileExisting,
extensionToName,
pathJoiner,
} from '../utils/helper.js';
export class GenerateController {
constructor(program) {
this.program = program;
}
generateBasicController() {
this.program
.command('controller')
.description('Generate a new controller')
.argument('<fileName>', 'Name of the file to generate')
.action(async (fileName) => {
const isExist = await checkFileExisting(fileName, 'controller');
if (isExist) return console.log(chalk.red('File is already existing!'));
console.log(
chalk.magenta(
`Generating a new controller: ${chalk.bold(fileName)}...`
)
);
try {
await fs.mkdir(pathJoiner('controllers'), { recursive: true });
const filePath = `controllers/${extensionToName(
fileName,
'Controller'
)}`;
fs.writeFile(pathJoiner(filePath), basicControllerText(fileName));
console.log(
chalk.blue(
`Controller ${chalk.bold(fileName)} has been created Successfully`
)
);
} catch (err) {
console.error(chalk.red(err.message));
}
});
}
}