diff --git a/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts b/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts index b929128de5..ae7af25afc 100644 --- a/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts +++ b/packages/repo-tools/src/commands/package/schema/openapi/generate/server.ts @@ -15,15 +15,15 @@ */ import chalk from 'chalk'; -import { resolve } from 'path'; +import { resolve, dirname } from 'path'; import YAML from 'js-yaml'; import { + OLD_SCHEMA_PATH, OPENAPI_IGNORE_FILES, OUTPUT_PATH, TS_SCHEMA_PATH, } from '../../../../../lib/openapi/constants'; import { paths as cliPaths } from '../../../../../lib/paths'; -import { mkdirpSync } from 'fs-extra'; import fs from 'fs-extra'; import { exec } from '../../../../../lib/exec'; import { resolvePackagePath } from '@backstage/backend-common'; @@ -38,6 +38,14 @@ async function generateSpecFile() { const tsPath = cliPaths.resolveTarget(TS_SCHEMA_PATH); + await fs.mkdirp(dirname(tsPath)); + + const oldTsPath = cliPaths.resolveTarget(OLD_SCHEMA_PATH); + if (oldTsPath) { + console.warn(`Removing old schema file at ${oldTsPath}`); + fs.removeSync(oldTsPath); + } + // The first set of comment slashes allow for the eslint notice plugin to run // with onNonMatchingHeader: 'replace', as is the case in the open source // Backstage repo. Otherwise the auto-generated comment will be removed by the @@ -50,7 +58,7 @@ async function generateSpecFile() { // * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. * // ****************************************************************** import {createValidatedOpenApiRouterFromGeneratedEndpointMap} from '@backstage/backend-openapi-utils'; -import {EndpointMap} from '../generated'; +import {EndpointMap} from './'; export const spec = ${JSON.stringify(yaml, null, 2)} as const; export const createOpenApiRouter = async ( options?: Parameters['1'], @@ -69,7 +77,6 @@ export const createOpenApiRouter = async ( async function generate(abortSignal?: AbortController) { const resolvedOpenapiPath = await getPathToCurrentOpenApiSpec(); const resolvedOutputDirectory = await getRelativePathToFile(OUTPUT_PATH); - mkdirpSync(resolvedOutputDirectory); await fs.mkdirp(resolvedOutputDirectory); diff --git a/packages/repo-tools/src/lib/openapi/constants.ts b/packages/repo-tools/src/lib/openapi/constants.ts index 9a54a9a0ff..eb4b62db8f 100644 --- a/packages/repo-tools/src/lib/openapi/constants.ts +++ b/packages/repo-tools/src/lib/openapi/constants.ts @@ -16,7 +16,9 @@ export const YAML_SCHEMA_PATH = 'src/schema/openapi.yaml'; -export const TS_MODULE = 'src/schema/openapi.generated'; +export const TS_MODULE = 'src/generated/router'; + +export const OLD_SCHEMA_PATH = `src/schema/openapi.generated.ts`; export const TS_SCHEMA_PATH = `${TS_MODULE}.ts`; diff --git a/packages/repo-tools/templates/typescript-backstage-server/index.mustache b/packages/repo-tools/templates/typescript-backstage-server/index.mustache index fb5eda4676..3e7a88faa4 100644 --- a/packages/repo-tools/templates/typescript-backstage-server/index.mustache +++ b/packages/repo-tools/templates/typescript-backstage-server/index.mustache @@ -1,3 +1,4 @@ // -export * from './apis'; \ No newline at end of file +export * from './apis'; +export * from './router'; diff --git a/plugins/catalog-backend/src/generated/index.ts b/plugins/catalog-backend/src/generated/index.ts index 4eac4cb6bc..69c39313c6 100644 --- a/plugins/catalog-backend/src/generated/index.ts +++ b/plugins/catalog-backend/src/generated/index.ts @@ -15,3 +15,4 @@ */ export * from './apis'; +export * from './router'; diff --git a/plugins/catalog-backend/src/schema/openapi.generated.ts b/plugins/catalog-backend/src/generated/router.ts similarity index 99% rename from plugins/catalog-backend/src/schema/openapi.generated.ts rename to plugins/catalog-backend/src/generated/router.ts index e1296f2f95..8712625653 100644 --- a/plugins/catalog-backend/src/schema/openapi.generated.ts +++ b/plugins/catalog-backend/src/generated/router.ts @@ -18,7 +18,7 @@ // * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. * // ****************************************************************** import { createValidatedOpenApiRouterFromGeneratedEndpointMap } from '@backstage/backend-openapi-utils'; -import { EndpointMap } from '../generated'; +import { EndpointMap } from './'; export const spec = { openapi: '3.0.3', diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index 4a89cfc6cb..bcf69a6825 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -46,7 +46,7 @@ import { locationInput, validateRequestBody, } from './util'; -import { createOpenApiRouter } from '../schema/openapi.generated'; +import { createOpenApiRouter } from '../generated'; import { parseEntityPaginationParams } from './request/parseEntityPaginationParams'; import { AuthService,