@notadd/cli
Version:
notadd core none dependence
193 lines (187 loc) • 6.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateCommand = void 0;
const tslib_1 = require("tslib");
const cli_core_1 = require("@notadd/cli-core");
const core_1 = require("@notadd/core");
const fs_extra_1 = require("fs-extra");
const path_1 = require("path");
const toPascalCase = (str) => str.split('-').reduce((res, part) => res + part[0].toUpperCase() + part.substr(1), '');
/**
* 生成命令
*/
let CreateCommand = class CreateCommand {
constructor(logger) {
this.logger = logger;
}
/**
* 自动生成组件模板
* @param name
*/
async createComponent(name) {
if (!name) {
this.logger.log(`name参数不能为空`);
return;
}
const template = `import { Module } from '@notadd/core';
@Module({
providers: [],
imports: [],
controllers: []
})
export class ${toPascalCase(name)}Module {
}
`;
const path = path_1.join(process.cwd(), `${name}.module.ts`);
if (fs_extra_1.existsSync(path)) {
this.logger.log(`文件已存在:${path}`);
}
else {
fs_extra_1.writeFileSync(path, template);
}
}
/**
* 自动生成module模板
* @param name
* notadd cm/demoModule?i=2 --name2=demo2
*/
async createModule(name, name2) {
if (!name) {
this.logger.log(`name参数不能为空`);
return;
}
const template = `import { Module } from '@notadd/core';
@Module({
providers: [],
imports: [],
controllers: []
})
export class ${toPascalCase(name)}Module {
}
`;
const path = path_1.join(process.cwd(), `${name}.module.ts`);
if (fs_extra_1.existsSync(path)) {
this.logger.log(`文件已存在:${path}`);
}
else {
fs_extra_1.writeFileSync(path, template);
}
}
/**
* 自动生成service模板
* @param name
*/
async createService(name) {
if (!name) {
this.logger.log(`name参数不能为空`);
return;
}
const template = `import { Injectable } from '@notadd/core';
@Injectable()
export class ${toPascalCase(name)}Service {
}
`;
const path = path_1.join(process.cwd(), `${name}.service.ts`);
if (fs_extra_1.existsSync(path)) {
this.logger.log(`文件已存在:${path}`);
}
else {
fs_extra_1.writeFileSync(path, template);
}
}
/**
* 自动生成Entity模板
* @param name
*/
async createEntity(name) {
if (!name) {
this.logger.log(`name参数不能为空`);
return;
}
const template = `import { Entity, PrimaryGeneratedColumn } from '@notadd/typeorm';
@Entity()
export class ${toPascalCase(name)}Entity {
@PrimaryGeneratedColumn()
id: number;
}
`;
const path = path_1.join(process.cwd(), `${name}.entity.ts`);
if (fs_extra_1.existsSync(path)) {
this.logger.log(`文件已存在:${path}`);
}
else {
fs_extra_1.writeFileSync(path, template);
}
}
/**
* 自动生成controller模板
* @param name
*/
async createController(name) {
if (!name) {
this.logger.log(`name参数不能为空`);
return;
}
const template = `import { Controller, Query, Args, EntityService } from '@notadd/core';
@Controller()
export class ${toPascalCase(name)}Controller {
constructor(private entityService: EntityService ){}
@Query()
async ${name}(@Args('entity') entity: ${toPascalCase(name)}Input): Promise<${toPascalCase(name)}Output> {
return {} as ${toPascalCase(name)}Output;
}
}
export interface ${toPascalCase(name)}Input {
}
export interface ${toPascalCase(name)}Output {
}
`;
const path = path_1.join(process.cwd(), `${name}.controller.ts`);
if (fs_extra_1.existsSync(path)) {
this.logger.log(`文件已存在:${path}`);
}
else {
fs_extra_1.writeFileSync(path, template);
}
}
};
tslib_1.__decorate([
cli_core_1.Command('cp/:name'),
tslib_1.__param(0, core_1.Param('name')),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", Promise)
], CreateCommand.prototype, "createComponent", null);
tslib_1.__decorate([
cli_core_1.Command('cm/:path'),
tslib_1.__param(0, core_1.Param('path')), tslib_1.__param(1, core_1.Args('name2')),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String, String]),
tslib_1.__metadata("design:returntype", Promise)
], CreateCommand.prototype, "createModule", null);
tslib_1.__decorate([
cli_core_1.Command(`cs/:name`),
tslib_1.__param(0, core_1.Param('name')),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", Promise)
], CreateCommand.prototype, "createService", null);
tslib_1.__decorate([
cli_core_1.Command('ce/:name'),
tslib_1.__param(0, core_1.Param('name')),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", Promise)
], CreateCommand.prototype, "createEntity", null);
tslib_1.__decorate([
cli_core_1.Command('cc/:name'),
tslib_1.__param(0, core_1.Param('name')),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", Promise)
], CreateCommand.prototype, "createController", null);
CreateCommand = tslib_1.__decorate([
core_1.Controller(),
tslib_1.__metadata("design:paramtypes", [core_1.Logger])
], CreateCommand);
exports.CreateCommand = CreateCommand;
;