@notadd/cli
Version:
notadd core none dependence
148 lines (142 loc) • 4.26 kB
text/typescript
import { Command } from "@notadd/cli-core";
import { Controller, Param, Logger, Query, Args } from '@notadd/core';
import { writeFileSync, existsSync } from 'fs-extra'
import { join } from 'path'
const toPascalCase = (str: string) => str.split('-').reduce((res, part) => res + part[0].toUpperCase() + part.substr(1), '');
/**
* 生成命令
*/
()
export class CreateCommand {
constructor(private logger: Logger) { }
/**
* 自动生成组件模板
* @param name
*/
('cp/:name')
async createComponent('name') name: string) {
(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 = join(process.cwd(), `${name}.module.ts`)
if (existsSync(path)) {
this.logger.log(`文件已存在:${path}`)
} else {
writeFileSync(path, template)
}
}
/**
* 自动生成module模板
* @param name
* notadd cm/demoModule?i=2 --name2=demo2
*/
('cm/:path')
async createModule('path') name: string, ('name2') name2: string) {
(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 = join(process.cwd(), `${name}.module.ts`)
if (existsSync(path)) {
this.logger.log(`文件已存在:${path}`)
} else {
writeFileSync(path, template)
}
}
/**
* 自动生成service模板
* @param name
*/
(`cs/:name`)
async createService('name') name: string) {
(if (!name) {
this.logger.log(`name参数不能为空`)
return;
}
const template = `import { Injectable } from '@notadd/core';
@Injectable()
export class ${toPascalCase(name)}Service {
}
`
const path = join(process.cwd(), `${name}.service.ts`)
if (existsSync(path)) {
this.logger.log(`文件已存在:${path}`)
} else {
writeFileSync(path, template)
}
}
/**
* 自动生成Entity模板
* @param name
*/
('ce/:name')
async createEntity('name') name: string) {
(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 = join(process.cwd(), `${name}.entity.ts`)
if (existsSync(path)) {
this.logger.log(`文件已存在:${path}`)
} else {
writeFileSync(path, template)
}
}
/**
* 自动生成controller模板
* @param name
*/
('cc/:name')
async createController('name') name: string) {
(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 = join(process.cwd(), `${name}.controller.ts`)
if (existsSync(path)) {
this.logger.log(`文件已存在:${path}`)
} else {
writeFileSync(path, template)
}
}
}