From ae7c383f45b437a92ca00b7fbc02a043b6748ce2 Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Fri, 26 May 2023 17:55:31 +0300 Subject: [PATCH] add schematic wrapper for proxy-add --- .../generators/generate-proxy/generator.ts | 24 +++--- .../src/generators/generate-proxy/schema.d.ts | 8 +- .../src/generators/generate-proxy/schema.json | 86 +++++++++++++++++-- 3 files changed, 99 insertions(+), 19 deletions(-) diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts index 7596a2db8d..a12a59a82a 100644 --- a/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts @@ -1,17 +1,15 @@ -import { addProjectConfiguration, formatFiles, generateFiles, Tree } from '@nx/devkit'; -import * as path from 'path'; import { GenerateProxyGeneratorSchema } from './schema'; +import { Tree } from '@nrwl/devkit'; +import { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter'; -export async function generateProxyGenerator(tree: Tree, options: GenerateProxyGeneratorSchema) { - const projectRoot = `libs/${options.name}`; - addProjectConfiguration(tree, options.name, { - root: projectRoot, - projectType: 'library', - sourceRoot: `${projectRoot}/src`, - targets: {}, +export default async function (host: Tree, schema: GenerateProxyGeneratorSchema) { + const runAngularLibrarySchematic = wrapAngularDevkitSchematic('@abp/ng.schematics', 'proxy-add'); + + await runAngularLibrarySchematic(host, { + ...schema, }); - generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options); - await formatFiles(tree); -} -export default generateProxyGenerator; + return () => { + console.log(`proxy added '${schema.target}`); + }; +} diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts index 9ce9dc8761..cbc2924c78 100644 --- a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts @@ -1,3 +1,9 @@ export interface GenerateProxyGeneratorSchema { - name: string; + module: string; + apiName: string; + source: string; + target: string; + url: string; + serviceType: string; + entryPoint: string; } diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json index b04c23da0a..51f3916848 100644 --- a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json @@ -1,18 +1,94 @@ { - "$schema": "http://json-schema.org/schema", + "$schema": "https://json-schema.org/schema", "$id": "GenerateProxy", "title": "", "type": "object", "properties": { - "name": { + "module": { + "description": "Backend module name", "type": "string", - "description": "", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?" + "x-prompt": "Please enter backend module name. (default: \"app\")" + }, + "apiName": { + "description": "Backend api name, a.k.a. remoteServiceName", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" + }, + "source": { + "description": "Source Angular project for API definition URL & root namespace resolution", + "type": "string", + "$default": { + "$source": "argv", + "index": 2 + }, + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + }, + "target": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 3 + }, + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + }, + "url": { + "description": "Url for API definition", + "type": "string", + "$default": { + "$source": "argv", + "index": 4 + }, + "x-prompt": "Please enter URL for API definition (default: API Name's url in environment file)" + }, + "serviceType": { + "description": "Service type to the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 5 + }, + "enum": [ + "application", + "integration", + "all" + ], + "x-prompt": { + "message": "Specifies the service type to generate. `application`, `integration` and `all`, Default value: `application`", + "type": "list", + "items": [ + { + "value": "all", + "label": "All" + }, + { + "value": "application", + "label": "Application" + }, + { + "value": "integration", + "label": "Integration" + } + ] + } + }, + "entryPoint": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 6 + }, + "x-prompt": "Please enter target entry point to place the generated code. (default: null)" } }, - "required": ["name"] + "required": [] }