37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { NestFactory } from "@nestjs/core";
|
|
import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger";
|
|
import { writeFileSync, mkdirSync } from "fs";
|
|
import { join } from "path";
|
|
import { OpenApiModule } from "./openapi.module";
|
|
|
|
async function generate() {
|
|
try {
|
|
console.log("Creating NestJS application...");
|
|
const app = await NestFactory.create(OpenApiModule, { logger: false });
|
|
|
|
console.log("Building OpenAPI config...");
|
|
const config = new DocumentBuilder()
|
|
.setTitle("Customer Portal API")
|
|
.setDescription("Backend for Frontend API for customer portal")
|
|
.setVersion("1.0")
|
|
.addBearerAuth()
|
|
.build();
|
|
|
|
console.log("Generating OpenAPI document...");
|
|
const document = SwaggerModule.createDocument(app, config);
|
|
|
|
console.log("Writing OpenAPI file...");
|
|
const outDir = join(process.cwd(), "openapi");
|
|
mkdirSync(outDir, { recursive: true });
|
|
writeFileSync(join(outDir, "openapi.json"), JSON.stringify(document, null, 2));
|
|
|
|
console.log("OpenAPI generation completed successfully!");
|
|
await app.close();
|
|
} catch (error) {
|
|
console.error("Error generating OpenAPI:", error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
void generate();
|