From efb63a9b791e938df6cc782229f6b2d13a091d87 Mon Sep 17 00:00:00 2001
From: Zdravko Iliev <zdravko.iliev@vereign.com>
Date: Thu, 2 Nov 2023 15:25:58 +0000
Subject: [PATCH] fix: separate swagger generation from server run

---
 .env.example             |  1 +
 apps/agent/src/main.ts   | 20 ++++++++++++--------
 apps/gateway/src/main.ts | 22 +++++++++++++---------
 3 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/.env.example b/.env.example
index c3cd2caa..56fb83cf 100644
--- a/.env.example
+++ b/.env.example
@@ -35,3 +35,4 @@ ATTESTATION_SERVICE_HOST=0.0.0.0
 PROOF_SERVICE_TCP_PORT=8884
 PROOF_SERVICE_HOST=0.0.0.0
 
+SWAGGER=false
diff --git a/apps/agent/src/main.ts b/apps/agent/src/main.ts
index 2cec87b8..daab3ec9 100644
--- a/apps/agent/src/main.ts
+++ b/apps/agent/src/main.ts
@@ -17,15 +17,19 @@ async function bootstrap() {
   const port = process.env.AGENT_PORT || 3001;
   app.enableShutdownHooks();
 
-  const config = new DocumentBuilder()
-    .setTitle("Agent")
-    .setDescription("Agent API")
-    .setVersion("1.0")
-    .build();
+  if (process.env.SWAGGER === "true") {
+    const config = new DocumentBuilder()
+      .setTitle("Agent")
+      .setDescription("Agent API")
+      .setVersion("1.0")
+      .build();
 
-  const document = SwaggerModule.createDocument(app, config);
-  fs.writeFileSync("./agent-swagger.json", JSON.stringify(document));
-  SwaggerModule.setup("api", app, document);
+    const document = SwaggerModule.createDocument(app, config);
+    fs.writeFileSync("./agent-swagger.json", JSON.stringify(document));
+    SwaggerModule.setup("api", app, document);
+    Logger.log(`Swagger file written`);
+    return process.kill(0);
+  }
 
   await app.listen(port, "0.0.0.0");
   Logger.log(
diff --git a/apps/gateway/src/main.ts b/apps/gateway/src/main.ts
index d3a80672..46494384 100644
--- a/apps/gateway/src/main.ts
+++ b/apps/gateway/src/main.ts
@@ -38,17 +38,21 @@ async function bootstrap() {
 
   app.enableShutdownHooks();
 
-  const config = new DocumentBuilder()
-    .setTitle("OCM Gateway")
-    .setDescription("OCM ENGINE GATEWAY API")
-    .setVersion("1.0")
-    .addServer(`http://${gatewayConfig.host}:${gatewayConfig.httpPort}`)
-    .build();
+  if (process.env.SWAGGER === "true") {
+    const config = new DocumentBuilder()
+      .setTitle("OCM Gateway")
+      .setDescription("OCM ENGINE GATEWAY API")
+      .setVersion("1.0")
+      .addServer(`http://${gatewayConfig.host}:${gatewayConfig.httpPort}`)
+      .build();
 
-  const document = SwaggerModule.createDocument(app, config);
-  fs.writeFileSync("./gateway-swagger.json", JSON.stringify(document));
-  SwaggerModule.setup("api", app, document);
+    const document = SwaggerModule.createDocument(app, config);
+    fs.writeFileSync("./gateway-swagger.json", JSON.stringify(document));
+    SwaggerModule.setup("api", app, document);
 
+    Logger.log(`Swagger file written`);
+    return process.kill(0);
+  }
   const port = gatewayConfig.httpPort || 3000;
 
   await app.listen(port, gatewayConfig.host);
-- 
GitLab