From ce425d274c836da1820d6f486088020333933fbf Mon Sep 17 00:00:00 2001 From: Shiva953 Date: Thu, 25 Jan 2024 17:13:03 +0530 Subject: [PATCH 1/2] feat: added new flags for registry url and auth Signed-off-by: Shiva953 --- docs/usage.md | 3 +++ src/commands/generate/fromTemplate.ts | 29 ++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 2a7f076596c..a7386822d58 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -398,6 +398,9 @@ FLAGS --force-write Force writing of the generated files to given directory even if it is a git repo with unstaged files or not empty dir (defaults to false) --map-base-url= Maps all schema references from base url to local folder + --registry-url= Specifies URL of private registry for fetching templates&dependencies + --registry-auth= The registry username and password encoded with base64, formatted as username:password + --registry-token= The npm registry authentication token DESCRIPTION Generates whatever you want using templates compatible with AsyncAPI Generator. diff --git a/src/commands/generate/fromTemplate.ts b/src/commands/generate/fromTemplate.ts index e53ea665cb2..8ff08501186 100644 --- a/src/commands/generate/fromTemplate.ts +++ b/src/commands/generate/fromTemplate.ts @@ -27,7 +27,8 @@ interface IMapBaseUrlToFlag { interface ParsedFlags { params: Record, disableHooks: Record, - mapBaseUrlToFolder: IMapBaseUrlToFlag + mapBaseUrlToFolder: IMapBaseUrlToFlag, + registryUrl: string } const templatesNotSupportingV3: Record = { @@ -100,6 +101,15 @@ export default class Template extends Command { 'map-base-url': Flags.string({ description: 'Maps all schema references from base url to local folder' }), + 'registry-url': Flags.string({ + description: 'Specifies the URL of the private registry for fetching templates and dependencies' + }), + 'registry-auth': Flags.string({ + description: 'The registry username and password encoded with base64, formatted as username:password' + }), + 'registry-token': Flags.string({ + description: 'The npm registry authentication token, that can be passed instead of base64 encoded username and password' + }) }; static args = [ @@ -113,7 +123,7 @@ export default class Template extends Command { const asyncapi = args['asyncapi']; const template = args['template']; const output = flags.output || process.cwd(); - const parsedFlags = this.parseFlags(flags['disable-hook'], flags['param'], flags['map-base-url']); + const parsedFlags = this.parseFlags(flags['disable-hook'], flags['param'], flags['map-base-url'], flags['registry-url']); const options = { forceWrite: flags['force-write'], install: flags.install, @@ -122,6 +132,9 @@ export default class Template extends Command { noOverwriteGlobs: flags['no-overwrite'], mapBaseUrlToFolder: parsedFlags.mapBaseUrlToFolder, disabledHooks: parsedFlags.disableHooks, + registryUrl: parsedFlags.registryUrl, + registryAuth: flags['registry-auth'], + registryToken: flags['registry-token'] }; const asyncapiInput = (await load(asyncapi)) || (await load()); @@ -144,11 +157,12 @@ export default class Template extends Command { } } - private parseFlags(disableHooks?: string[], params?: string[], mapBaseUrl?: string): ParsedFlags { + private parseFlags(disableHooks?: string[], params?: string[], mapBaseUrl?: string, registryUrl?: string): ParsedFlags { return { params: this.paramParser(params), disableHooks: this.disableHooksParser(disableHooks), mapBaseUrlToFolder: this.mapBaseURLParser(mapBaseUrl), + registryUrl: this.registryURLParser(registryUrl), } as ParsedFlags; } @@ -199,6 +213,15 @@ export default class Template extends Command { return mapBaseURLToFolder; } + private registryURLParser(input?: string) { + if (!input) { return; } + const isURL = /^https?:/; + if (!isURL.test(input.toLowerCase())) { + throw new Error('Invalid --registry-url flag. The param requires a valid http/https url.'); + } + return input; + } + private async generate(asyncapi: string | undefined, template: string, output: string, options: any, genOption: any) { let specification: Specification; try { From 3e30ace34dc01c32c25d53e462d3c10b8738c702 Mon Sep 17 00:00:00 2001 From: Shiva953 Date: Fri, 26 Jan 2024 17:41:46 +0530 Subject: [PATCH 2/2] add default registry-url value Signed-off-by: Shiva953 --- src/commands/generate/fromTemplate.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/commands/generate/fromTemplate.ts b/src/commands/generate/fromTemplate.ts index 8ff08501186..32f480a2683 100644 --- a/src/commands/generate/fromTemplate.ts +++ b/src/commands/generate/fromTemplate.ts @@ -102,6 +102,7 @@ export default class Template extends Command { description: 'Maps all schema references from base url to local folder' }), 'registry-url': Flags.string({ + default: 'https://registry.npmjs.org', description: 'Specifies the URL of the private registry for fetching templates and dependencies' }), 'registry-auth': Flags.string({