Browse Source

feat(client-generator): add generator utils

pull/2225/head
mehmet-erim 6 years ago
parent
commit
737b43ce24
  1. 17
      npm/packs/client-generator/src/angular.ts
  2. 13
      npm/packs/client-generator/src/cli.ts
  3. 3
      npm/packs/client-generator/src/index.ts
  4. 10
      npm/packs/client-generator/src/templates/angular/service-templates.ts
  5. 13
      npm/packs/client-generator/src/utils/generators.ts

17
npm/packs/client-generator/src/angular.ts

@ -7,13 +7,15 @@ export async function angular(data: APIDefination.Response, selectedModules: str
selectedModules.forEach(async module => {
const element = data.modules[module];
let contents = [] as string[];
const actions = (Object.keys(element.controllers) || []).map(key => element.controllers[key].actions);
(Object.keys(element.controllers) || []).forEach(key => {
const controller = element.controllers[key];
actions.forEach(action => {
const actionKeys = Object.keys(action);
const actions = element.controllers[key].actions;
const actionKeys = Object.keys(actions);
let contents = [] as string[];
actionKeys.forEach(key => {
const element = action[key];
const element = actions[key];
console.log(element);
switch (element.httpMethod) {
@ -25,9 +27,8 @@ export async function angular(data: APIDefination.Response, selectedModules: str
break;
}
});
const service = ServiceTemplates.classTemplate(controller.controllerName, contents.join('\n'));
fse.writeFileSync(`dist/${changeCase.kebabCase(controller.controllerName)}.service.ts`, service);
});
const service = ServiceTemplates.classTemplate(element.rootPath, contents.join('\n'));
await fse.writeFile(`dist/${changeCase.kebabCase(element.rootPath)}.service.ts`, service);
});
}

13
npm/packs/client-generator/src/cli.ts

@ -3,15 +3,22 @@ import { axiosInstance } from './utils/axios';
import ora = require('ora');
import { angular } from './angular';
import chalk from 'chalk';
import { APIDefination } from './types/api-defination';
export async function cli(program: any) {
if (program.ui !== 'angular') {
program.ui = ((await uiSelection(['Angular'])) as string).toLowerCase();
}
const loading = ora('Waiting for the API response... \n');
loading.start();
const data = (await axiosInstance.get('a')) as any;
let data = {} as APIDefination.Response;
try {
data = (await axiosInstance.get('https://localhost:44305/api/abp/api-definition')).data;
} catch (error) {
console.error(error);
process.exit(1);
}
console.log(data);
loading.stop();
const selection = async (modules: string[]): Promise<string[]> => {
@ -26,7 +33,7 @@ export async function cli(program: any) {
};
// const modules = await selection(Object.keys(data.modules));
const modules = ['multi-tenancy'];
const modules = ['saas'];
switch (program.ui) {
case 'angular':

3
npm/packs/client-generator/src/index.ts

@ -1,9 +1,6 @@
#!/usr/bin/env node
import chalk from 'chalk';
import program from 'commander';
import ora from 'ora';
import { axiosInstance } from './utils/axios';
import { moduleSelection, uiSelection } from './utils/prompt';
import { cli } from './cli';
const clear = require('clear');
const figlet = require('figlet');

10
npm/packs/client-generator/src/templates/angular/service-templates.ts

@ -16,9 +16,15 @@ export class ${changeCase.pascalCase(name)}Service {
}`;
}
export function getMethodTemplate(name: string, url: string, params: string[] = [], queryParams?: object) {
export function getMethodTemplate(
name: string,
url: string,
args: string = '',
params: string[] = [],
queryParams?: object,
) {
return `
${changeCase.camelCase(replacer(name))}(${params.join(', ')}): Observable<any> {
${changeCase.camelCase(replacer(name))}(${args}): Observable<any> {
return this.restService.request<void, any>({
method: 'GET',
url: '/${url}${params.length ? '/' + params.join('/') : ''}',

13
npm/packs/client-generator/src/utils/generators.ts

@ -0,0 +1,13 @@
export interface GenerateArgsParam {
key: string;
type: string;
isOptional?: boolean;
}
export function generateArgs(args: GenerateArgsParam[]): string {
return args.reduce((acc, val) => {
const arg = `${val.key}${val.isOptional ? '?' : ''}: ${val.type}`;
if (acc) return `${acc}, ${arg}`;
else return arg;
}, '');
}
Loading…
Cancel
Save