rename to schema/openapi directory
Signed-off-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Signed-off-by: aramissennyeydd <aramis.sennyey@doordash.com>
This commit is contained in:
committed by
aramissennyeydd
parent
23e2366911
commit
7ab162e730
@@ -52,7 +52,7 @@ Run `yarn backstage-repo-tools package schema openapi generate --server` from th
|
||||
Use it like so, update your `router.ts` or `createRouter.ts` file with the following content,
|
||||
|
||||
```diff
|
||||
+ import { createOpenApiRouter } from '../generated';
|
||||
+ import { createOpenApiRouter } from '../schema/openapi';
|
||||
- import Router from 'express-promise-router';
|
||||
|
||||
...
|
||||
@@ -67,10 +67,10 @@ export async function createRouter(
|
||||
|
||||
From your current backend plugin directory, run `yarn backstage-repo-tools package schema openapi generate --client-package <plugin-client-directory>`. `<plugin-client-directory>` is a new directory and npm package that you should create. The general pattern is to add a new entry point to your plugin's common package, `plugins/<plugin-name>-common/client`. You should add this command to your `package.json` for future use.
|
||||
|
||||
The generated client will have a directory `src/generated` that exports a `DefaultApiClient` class and all generated types. You can use the client like so,
|
||||
The generated client will have a directory `src/schema/openapi/generated` that exports a `DefaultApiClient` class and all generated types. You can use the client like so,
|
||||
|
||||
```diff
|
||||
+ import { DefaultApiClient } from './generated';
|
||||
+ import { DefaultApiClient } from '../schema/openapi/generated';
|
||||
|
||||
export class CatalogClient implements CatalogApi {
|
||||
+ private readonly apiClient: DefaultApiClient;
|
||||
|
||||
@@ -20,7 +20,7 @@ info:
|
||||
|
||||
### Generating your client
|
||||
|
||||
1. Run `yarn backstage-repo-tools package schema openapi generate --client-package <directory>`. This will create a new folder in `<directory>/src/generated` to house the generated content. We recommend that the client package be your plugin's common package. You should then add a new entry point into the package so that the generated content can be accessed like so, `<plugin>-common/client`. To do that, adjust your `package.json` like so,
|
||||
1. Run `yarn backstage-repo-tools package schema openapi generate --client-package <directory>`. This will create a new folder in `<directory>/src/schema/openapi/generated` to house the generated content. We recommend that the client package be your plugin's common package. You should then add a new entry point into the package so that the generated content can be accessed like so, `<plugin>-common/client`. To do that, adjust your `package.json` like so,
|
||||
|
||||
```json
|
||||
// ... other scripts
|
||||
@@ -52,6 +52,12 @@ info:
|
||||
// ... other stuff
|
||||
```
|
||||
|
||||
2. You should not need to import anything from subfolders of the `src/generated` parent folder, everything you should require will be accessible from the `src/generated/index.ts` file. Of note,
|
||||
and then create a new `src/client.ts` with the following content,
|
||||
|
||||
```ts name="src/client.ts"
|
||||
export * from './schema/openapi/generated';
|
||||
```
|
||||
|
||||
2. You should not need to import anything from subfolders of the `src/schema/openapi/generated` parent folder, everything you should require will be accessible from the `src/schema/openapi/generated/index.ts` file. Of note,
|
||||
1. `DefaultApiClient` - this is the client that you can use to access your specific spec.
|
||||
1. Any request or response types - these will be available from the index and should match the names in your spec.
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
|
||||
import chalk from 'chalk';
|
||||
import { resolve, dirname } from 'path';
|
||||
import { resolve, dirname, join } from 'path';
|
||||
import YAML from 'js-yaml';
|
||||
import {
|
||||
OLD_SCHEMA_PATH,
|
||||
@@ -38,7 +38,8 @@ async function generateSpecFile() {
|
||||
|
||||
const tsPath = cliPaths.resolveTarget(TS_SCHEMA_PATH);
|
||||
|
||||
await fs.mkdirp(dirname(tsPath));
|
||||
const schemaDir = dirname(tsPath);
|
||||
await fs.mkdirp(schemaDir);
|
||||
|
||||
const oldTsPath = cliPaths.resolveTarget(OLD_SCHEMA_PATH);
|
||||
if (oldTsPath) {
|
||||
@@ -66,9 +67,16 @@ export const createOpenApiRouter = async (
|
||||
`,
|
||||
);
|
||||
|
||||
await exec(`yarn backstage-cli package lint --fix ${tsPath}`);
|
||||
const indexFile = join(schemaDir, '..', 'index.ts');
|
||||
await fs.writeFile(
|
||||
indexFile,
|
||||
`//
|
||||
export * from './generated';`,
|
||||
);
|
||||
|
||||
await exec(`yarn backstage-cli package lint`, ['--fix', tsPath, indexFile]);
|
||||
if (await cliPaths.resolveTargetRoot('node_modules/.bin/prettier')) {
|
||||
await exec(`yarn prettier`, ['--write', tsPath], {
|
||||
await exec(`yarn prettier`, ['--write', tsPath, indexFile], {
|
||||
cwd: cliPaths.targetRoot,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
export const YAML_SCHEMA_PATH = 'src/schema/openapi.yaml';
|
||||
|
||||
export const TS_MODULE = 'src/generated/router';
|
||||
export const OUTPUT_PATH = 'src/schema/openapi/generated';
|
||||
|
||||
export const TS_MODULE = `${OUTPUT_PATH}/router`;
|
||||
|
||||
export const OLD_SCHEMA_PATH = `src/schema/openapi.generated.ts`;
|
||||
|
||||
@@ -26,8 +28,6 @@ export const GENERATOR_VERSION = `1.0.0`;
|
||||
export const GENERATOR_NAME = 'typescript-backstage';
|
||||
export const GENERATOR_FILE = `packages/template-openapi-plugin-client/generator/target/${GENERATOR_NAME}-openapi-generator-${GENERATOR_VERSION}.jar`;
|
||||
|
||||
export const OUTPUT_PATH = 'src/generated';
|
||||
|
||||
export const OPENAPI_IGNORE_FILES = [
|
||||
// Get rid of the default files.
|
||||
'*.md',
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2024 The Backstage Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export * from './generated';
|
||||
@@ -46,7 +46,7 @@ import {
|
||||
locationInput,
|
||||
validateRequestBody,
|
||||
} from './util';
|
||||
import { createOpenApiRouter } from '../generated';
|
||||
import { createOpenApiRouter } from '../schema/openapi';
|
||||
import { parseEntityPaginationParams } from './request/parseEntityPaginationParams';
|
||||
import {
|
||||
AuthService,
|
||||
|
||||
@@ -14,4 +14,4 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
export * from './generated';
|
||||
export * from './schema/openapi/generated';
|
||||
|
||||
+1
@@ -36,6 +36,7 @@ import { GetEntitiesByRefsRequest } from '../models/GetEntitiesByRefsRequest.mod
|
||||
import { GetLocations200ResponseInner } from '../models/GetLocations200ResponseInner.model';
|
||||
import { Location } from '../models/Location.model';
|
||||
import { RefreshEntityRequest } from '../models/RefreshEntityRequest.model';
|
||||
import { ValidateEntity400Response } from '../models/ValidateEntity400Response.model';
|
||||
import { ValidateEntityRequest } from '../models/ValidateEntityRequest.model';
|
||||
|
||||
/**
|
||||
Reference in New Issue
Block a user