Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packages/openapi-code-generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"author": "Michael Nahkies",
"license": "MIT",
"devDependencies": {
"@types/convict": "^6.1.4",
"@types/js-yaml": "^4.0.6",
"@types/lodash": "^4.14.198",
"@types/prettier": "^3.0.0",
Expand All @@ -20,10 +19,11 @@
"typescript": "~5.1.6"
},
"dependencies": {
"@commander-js/extra-typings": "^11.0.0",
"ajv": "^8.12.0",
"ajv-draft-04": "^1.0.0",
"ajv-formats": "^2.1.1",
"convict": "^6.2.4",
"commander": "^11.0.0",
"js-yaml": "^4.1.0",
"lodash": "^4.17.21",
"prettier": "^3.0.3",
Expand Down
61 changes: 0 additions & 61 deletions packages/openapi-code-generator/src/config.ts

This file was deleted.

51 changes: 46 additions & 5 deletions packages/openapi-code-generator/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
import {logger} from "./core/logger"

logger.time("program starting")
#!/usr/bin/env node
/**
* @prettier
*/

import "source-map-support/register"

import {OpenapiLoader} from "./core/openapi-loader"
import {Input} from "./core/input"
import {OpenapiValidator} from "./core/openapi-validator"
import {config} from "./config"
import {Option, Command} from "@commander-js/extra-typings"
import {templates} from "./templates"
import {logger} from "./core/logger"

const program = new Command()
.addOption(
new Option("-i --input <value>", "openapi3 schema file to generate from")
.env("OPENAPI_INPUT")
.makeOptionMandatory(),
)
.addOption(
new Option("-o --output <value>", "directory to output generated code")
.env("OPENAPI_OUTPUT")
.makeOptionMandatory(),
)
.addOption(
new Option("-t --template <value>", "template to use")
.env("OPENAPI_TEMPLATE")
.choices([
"typescript-koa",
"typescript-fetch",
"typescript-angular",
] as const satisfies Readonly<Array<keyof typeof templates>>)
.makeOptionMandatory(),
)
.addOption(
new Option(
"-s --schema-builder <value>",
"runtime schema parsing library to use",
)
.env("OPENAPI_SCHEMA_BUILDER")
.choices(["zod", "joi"] as const)
.default("zod" as const)
.makeOptionMandatory(),
)
.parse()

const config = program.opts()

async function main() {
logger.time("program starting")
logger.info(`running on input file '${config.input}'`)

logger.time("load files")
Expand All @@ -20,7 +59,9 @@ async function main() {

const input = new Input(loader)

await config.generator({
const generator = templates[config.template]

await generator({
input,
dest: config.output,
schemaBuilder: config.schemaBuilder,
Expand Down
4 changes: 2 additions & 2 deletions packages/openapi-code-generator/src/templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import {generateTypescriptFetch} from "./typescript/typescript-fetch/typescript-
import {generateTypescriptKoa} from "./typescript/typescript-koa/typescript-koa.generator"
import {OpenapiGenerator} from "./templates.types"

export const templates: Record<string, OpenapiGenerator> = {
export const templates = {
"typescript-fetch": generateTypescriptFetch,
"typescript-angular": generateTypescriptAngular,
"typescript-koa": generateTypescriptKoa,
}
} satisfies Record<string, OpenapiGenerator>
43 changes: 13 additions & 30 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1810,6 +1810,15 @@ __metadata:
languageName: node
linkType: hard

"@commander-js/extra-typings@npm:^11.0.0":
version: 11.0.0
resolution: "@commander-js/extra-typings@npm:11.0.0"
peerDependencies:
commander: 11.0.x
checksum: c17c60f5044b8ff8891ee94913c1bec64147895a876b5ebf2f7e960efeab61170ce9122eff0f84688bc9db08b520429cdac6c0f3d627e2ef76ebd010461f66cb
languageName: node
linkType: hard

"@cspotcode/source-map-support@npm:^0.8.0":
version: 0.8.1
resolution: "@cspotcode/source-map-support@npm:0.8.1"
Expand Down Expand Up @@ -2702,14 +2711,14 @@ __metadata:
version: 0.0.0-use.local
resolution: "@nahkies/openapi-code-generator@workspace:packages/openapi-code-generator"
dependencies:
"@types/convict": ^6.1.4
"@commander-js/extra-typings": ^11.0.0
"@types/js-yaml": ^4.0.6
"@types/lodash": ^4.14.198
"@types/prettier": ^3.0.0
ajv: ^8.12.0
ajv-draft-04: ^1.0.0
ajv-formats: ^2.1.1
convict: ^6.2.4
commander: ^11.0.0
js-yaml: ^4.1.0
lodash: ^4.17.21
nodemon: 3.0.1
Expand Down Expand Up @@ -3384,15 +3393,6 @@ __metadata:
languageName: node
linkType: hard

"@types/convict@npm:^6.1.4":
version: 6.1.4
resolution: "@types/convict@npm:6.1.4"
dependencies:
"@types/node": "*"
checksum: a4caa79f3f9442d8c2b3d0b823efe9a26e3f6f3345fb1e3bb872b5666faa3d8cac466fdeb9b4187a464a355073b4d252cc0dba74e74b2c38830906b93f1f610c
languageName: node
linkType: hard

"@types/cookie@npm:^0.4.1":
version: 0.4.1
resolution: "@types/cookie@npm:0.4.1"
Expand Down Expand Up @@ -5477,7 +5477,7 @@ __metadata:
languageName: node
linkType: hard

"commander@npm:11.0.0":
"commander@npm:11.0.0, commander@npm:^11.0.0":
version: 11.0.0
resolution: "commander@npm:11.0.0"
checksum: 6621954e1e1d078b4991c1f5bbd9439ad37aa7768d6ab4842de1dbd4d222c8a27e1b8e62108b3a92988614af45031d5bb2a2aaa92951f4d0c934d1a1ac564bb4
Expand Down Expand Up @@ -5721,16 +5721,6 @@ __metadata:
languageName: node
linkType: hard

"convict@npm:^6.2.4":
version: 6.2.4
resolution: "convict@npm:6.2.4"
dependencies:
lodash.clonedeep: ^4.5.0
yargs-parser: ^20.2.7
checksum: e14da5c359e3b0452d39c005429e5e4ab1192fa94e51824e135ca8e6b921e95dfd803c15993ea6d23837b6cecb5a402e981a5dd37bee52a62a7a0924798eefe0
languageName: node
linkType: hard

"cookie-signature@npm:1.0.6":
version: 1.0.6
resolution: "cookie-signature@npm:1.0.6"
Expand Down Expand Up @@ -10415,13 +10405,6 @@ __metadata:
languageName: node
linkType: hard

"lodash.clonedeep@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.clonedeep@npm:4.5.0"
checksum: 92c46f094b064e876a23c97f57f81fbffd5d760bf2d8a1c61d85db6d1e488c66b0384c943abee4f6af7debf5ad4e4282e74ff83177c9e63d8ff081a4837c3489
languageName: node
linkType: hard

"lodash.debounce@npm:^4.0.8":
version: 4.0.8
resolution: "lodash.debounce@npm:4.0.8"
Expand Down Expand Up @@ -15486,7 +15469,7 @@ __metadata:
languageName: node
linkType: hard

"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3, yargs-parser@npm:^20.2.7":
"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3":
version: 20.2.9
resolution: "yargs-parser@npm:20.2.9"
checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3
Expand Down