UNPKG

@foal/cli

Version:

CLI tool for FoalTS

54 lines (53 loc) 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateControllerCommandService = void 0; // std const path_1 = require("path"); const utils_1 = require("../utils"); /** * Service for creating a new controller file. */ class CreateControllerCommandService { generator; constructor(generator) { this.generator = generator; } /** * Create a new controller file. * * @param {string} name - The name of the controller * @param {boolean} register - Whether to register the controller in app.controller.ts * @returns {void} */ run({ name, register }) { let root = ''; if (this.generator.exists('src/app/controllers')) { root = 'src/app/controllers'; } else if (this.generator.exists('controllers')) { root = 'controllers'; } const names = (0, utils_1.getNames)((0, path_1.basename)(name)); const subdir = (0, path_1.dirname)(name); const parentControllerPath = `${subdir === '.' ? 'app' : (0, path_1.basename)(subdir)}.controller.ts`; const fileName = `${names.kebabName}.controller.ts`; const specFileName = `${names.kebabName}.controller.spec.ts`; const className = `${names.upperFirstCamelName}Controller`; this.generator .cd(root) .ensureDir(subdir) .cd(subdir) .render('controller/controller.empty.ts', fileName, names) .render('controller/controller.spec.empty.ts', specFileName, names) .ensureFile('index.ts') .addNamedExportIn('index.ts', className, `./${names.kebabName}.controller`); if (register) { this.generator .cd('..') .addOrExtendNamedImportIn(parentControllerPath, 'controller', '@foal/core', { logs: false }) .addOrExtendNamedImportIn(parentControllerPath, className, `./${subdir === '.' ? 'controllers' : (0, path_1.basename)(subdir)}`, { logs: false }) .addOrExtendClassArrayPropertyIn(parentControllerPath, 'subControllers', `controller('/${names.kebabName}', ${className})`); } } } exports.CreateControllerCommandService = CreateControllerCommandService;