Validate that the file is valid OpenAPI 3.1.

Signed-off-by: Aramis Sennyey <sennyeya@amazon.com>
This commit is contained in:
Aramis Sennyey
2023-03-07 17:00:41 -05:00
committed by Fredrik Adelöw
parent a876e69b20
commit caddd25a8d
3 changed files with 71 additions and 0 deletions
+1
View File
@@ -30,6 +30,7 @@
"backstage-cli": "bin/backstage-cli"
},
"dependencies": {
"@apidevtools/swagger-parser": "^10.1.0",
"@backstage/cli-common": "workspace:^",
"@backstage/config": "workspace:^",
"@backstage/config-loader": "workspace:^",
@@ -22,6 +22,8 @@ import { join } from 'path';
import chalk from 'chalk';
import { relative as relativePath } from 'path';
import { PackageGraph } from '../../lib/monorepo';
import { cloneDeep } from 'lodash';
import SwaggerParser from '@apidevtools/swagger-parser';
async function verify(directoryPath: string) {
const openapiPath = join(directoryPath, 'openapi.yaml');
@@ -29,6 +31,7 @@ async function verify(directoryPath: string) {
return;
}
const yaml = YAML.load(await fs.readFile(openapiPath, 'utf8'));
await SwaggerParser.validate(cloneDeep(yaml));
const schemaPath = join(directoryPath, 'schema/openapi.ts');
if (!(await fs.pathExists(schemaPath))) {
+67
View File
@@ -18,6 +18,17 @@ __metadata:
languageName: node
linkType: hard
"@apidevtools/json-schema-ref-parser@npm:9.0.6":
version: 9.0.6
resolution: "@apidevtools/json-schema-ref-parser@npm:9.0.6"
dependencies:
"@jsdevtools/ono": ^7.1.3
call-me-maybe: ^1.0.1
js-yaml: ^3.13.1
checksum: c7ff53623ab8a9dd221772a5757fa0b9e5167a5ac3a71c23596634bae6efc85d8efcdebbe17f73ee5c027ea5afc48c705e8a720f02c4909f9a357d8027040b7b
languageName: node
linkType: hard
"@apidevtools/json-schema-ref-parser@npm:^9.0.6":
version: 9.1.2
resolution: "@apidevtools/json-schema-ref-parser@npm:9.1.2"
@@ -30,6 +41,37 @@ __metadata:
languageName: node
linkType: hard
"@apidevtools/openapi-schemas@npm:^2.1.0":
version: 2.1.0
resolution: "@apidevtools/openapi-schemas@npm:2.1.0"
checksum: 4a8f64935b9049ef21e41fa4b188f39f6bc3f5291cebd451701db1115451ccb246a739e46cc5ce9ecdec781671431db40db7851acdac84a990a45756e0f32de3
languageName: node
linkType: hard
"@apidevtools/swagger-methods@npm:^3.0.2":
version: 3.0.2
resolution: "@apidevtools/swagger-methods@npm:3.0.2"
checksum: d06b1ac5c1956613c4c6be695612ef860cd4e962b93a509ca551735a328a856cae1e33399cac1dcbf8333ba22b231746f3586074769ef0e172cf549ec9e7eaae
languageName: node
linkType: hard
"@apidevtools/swagger-parser@npm:^10.1.0":
version: 10.1.0
resolution: "@apidevtools/swagger-parser@npm:10.1.0"
dependencies:
"@apidevtools/json-schema-ref-parser": 9.0.6
"@apidevtools/openapi-schemas": ^2.1.0
"@apidevtools/swagger-methods": ^3.0.2
"@jsdevtools/ono": ^7.1.3
ajv: ^8.6.3
ajv-draft-04: ^1.0.0
call-me-maybe: ^1.0.1
peerDependencies:
openapi-types: ">=7"
checksum: c7c923755bd025ee2cae97e1cfd525538523ba74c341a0ac814c023ffe5e63fc2d997539a8ccf9a0fcec41a2d6337d40cc5735acb991ddcbb415853a241908d1
languageName: node
linkType: hard
"@apollo/cache-control-types@npm:^1.0.2":
version: 1.0.2
resolution: "@apollo/cache-control-types@npm:1.0.2"
@@ -4066,6 +4108,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@backstage/cli@workspace:packages/cli"
dependencies:
"@apidevtools/swagger-parser": ^10.1.0
"@backstage/backend-common": "workspace:^"
"@backstage/cli-common": "workspace:^"
"@backstage/config": "workspace:^"
@@ -18001,6 +18044,18 @@ __metadata:
languageName: node
linkType: hard
"ajv-draft-04@npm:^1.0.0":
version: 1.0.0
resolution: "ajv-draft-04@npm:1.0.0"
peerDependencies:
ajv: ^8.5.0
peerDependenciesMeta:
ajv:
optional: true
checksum: 3f11fa0e7f7359bef6608657f02ab78e9cc62b1fb7bdd860db0d00351b3863a1189c1a23b72466d2d82726cab4eb20725c76f5e7c134a89865e2bfd0e6828137
languageName: node
linkType: hard
"ajv-formats@npm:^2.1.1":
version: 2.1.1
resolution: "ajv-formats@npm:2.1.1"
@@ -18059,6 +18114,18 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.12.0, ajv@npm:^8.6.3, ajv@npm:^8.8.0":
version: 8.12.0
resolution: "ajv@npm:8.12.0"
dependencies:
fast-deep-equal: ^3.1.1
json-schema-traverse: ^1.0.0
require-from-string: ^2.0.2
uri-js: ^4.2.2
checksum: 4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001
languageName: node
linkType: hard
"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.12.0, ajv@npm:^8.8.0":
version: 8.12.0
resolution: "ajv@npm:8.12.0"