From 3fb2fd76559213742bdbebdde5faa7880d4df0f1 Mon Sep 17 00:00:00 2001 From: aramissennyeydd Date: Sun, 7 Jul 2024 17:36:45 -0400 Subject: [PATCH] implement watch command Signed-off-by: aramissennyeydd --- .../src/generated/.openapi-generator-ignore | 24 -------------- packages/repo-tools/package.json | 2 +- .../package/schema/openapi/generate/index.ts | 32 +++++++++++++------ yarn.lock | 2 +- 4 files changed, 25 insertions(+), 35 deletions(-) delete mode 100644 packages/catalog-client/src/generated/.openapi-generator-ignore diff --git a/packages/catalog-client/src/generated/.openapi-generator-ignore b/packages/catalog-client/src/generated/.openapi-generator-ignore deleted file mode 100644 index bd8a6eec07..0000000000 --- a/packages/catalog-client/src/generated/.openapi-generator-ignore +++ /dev/null @@ -1,24 +0,0 @@ -*.md -*.mustache -apis/baseapi.ts -apis/exception.ts -auth/* -http/* -middleware.ts -servers.ts -util.ts -configuration.ts -rxjsStub.ts -.gitignore -apis/*.ts -!apis/*.client.ts -models/*.ts -!models/*.model.ts -!index.ts -!**/index.ts -types/ObjectParamAPI.ts -types/ObservableAPI.ts -types/PromiseAPI.ts -git_push.sh -package.json -tsconfig.json \ No newline at end of file diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index a8fef81b63..620456443d 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -62,7 +62,7 @@ "@stoplight/types": "^14.0.0", "@useoptic/openapi-utilities": "^0.55.0", "chalk": "^4.0.0", - "chokidar": "^3.6.0", + "chokidar": "^3.5.3", "codeowners-utils": "^1.0.2", "command-exists": "^1.2.9", "commander": "^12.0.0", diff --git a/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts b/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts index 9227b67ba8..b10ae941d4 100644 --- a/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts +++ b/packages/repo-tools/src/commands/package/schema/openapi/generate/index.ts @@ -29,29 +29,43 @@ export async function command(opts: OptionValues) { } const sharedCommand = async (abortSignal?: AbortController) => { + const promises = []; if (opts.clientPackage) { - await generateClient( - opts.clientPackage, - opts.clientAdditionalProperties, - abortSignal, + promises.push( + generateClient( + opts.clientPackage, + opts.clientAdditionalProperties, + abortSignal, + ), ); } if (opts.server) { - await generateServer(abortSignal); + promises.push(generateServer(abortSignal)); } + await Promise.all(promises); }; if (opts.watch) { try { const resolvedOpenapiPath = await getPathToCurrentOpenApiSpec(); let abortController = new AbortController(); - chokidar.watch(resolvedOpenapiPath).on('change', async () => { - console.log('detected changes'); + const watcher = chokidar.watch(resolvedOpenapiPath); + watcher.on('change', () => { + console.log('Detected changes! Regenerating...'); abortController.abort(); - await sharedCommand(abortController); abortController = new AbortController(); + sharedCommand(abortController); + }); + watcher.on('error', error => { + console.error('Error happened', error); + }); + + watcher.on('ready', async () => { + console.log( + 'Watching for changes in OpenAPI spec. Press Ctrl+C to stop.', + ); + await sharedCommand(); }); - await sharedCommand(); await new Promise(() => {}); } catch (err) { console.error(chalk.red('Error: ', err)); diff --git a/yarn.lock b/yarn.lock index eba469581e..af7d13981a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8309,7 +8309,7 @@ __metadata: "@types/prettier": ^2.0.0 "@useoptic/openapi-utilities": ^0.55.0 chalk: ^4.0.0 - chokidar: ^3.6.0 + chokidar: ^3.5.3 codeowners-utils: ^1.0.2 command-exists: ^1.2.9 commander: ^12.0.0