From fd3ca3ab4134e451dc374b63e157e698497566b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz>
Date: Wed, 2 Feb 2022 20:54:21 +0100
Subject: [PATCH] Swagger spec renderer, image version from spec

---
 .gitlab-ci.yml | 7 ++++---
 Dockerfile     | 3 ++-
 lib/CF.pm      | 8 +++++++-
 openapi.yaml   | 2 +-
 4 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fa18d79..a11cc56 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,18 +2,19 @@ image: docker:20.10.9
 
 variables:
   DOCKER_TLS_CERTDIR: "/certs"
-  IMAGE_VER: 2.6.0
 
 services:
   - docker:20.10.9-dind
 
 before_script:
+  - apk add --no-cache yq
   - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
 
 build:
   stage: build
   script:
+    - VERSION=`yq '.info.version' openapi.yaml`
     - docker pull $CI_REGISTRY_IMAGE:latest || true
-    - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$IMAGE_VER --tag $CI_REGISTRY_IMAGE:latest .
-    - docker push $CI_REGISTRY_IMAGE:$IMAGE_VER
+    - docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$VERSION --tag $CI_REGISTRY_IMAGE:latest .
+    - docker push $CI_REGISTRY_IMAGE:$VERSION
     - docker push $CI_REGISTRY_IMAGE:latest
diff --git a/Dockerfile b/Dockerfile
index 5b65619..c8dd4cc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,7 +21,8 @@ RUN cpanm \
     Mojo::Pg \
     Mojo::Redis \
     Mojo::JWT \
-    Mojolicious::Plugin::OpenAPI
+    Mojolicious::Plugin::OpenAPI \
+    Mojolicious::Plugin::SwaggerUI
 
 ADD . /opt/cf
 WORKDIR /opt/cf
diff --git a/lib/CF.pm b/lib/CF.pm
index 1fd445f..fbcce86 100644
--- a/lib/CF.pm
+++ b/lib/CF.pm
@@ -102,13 +102,19 @@ sub startup {
         }
     });
 
+    $self->plugin( SwaggerUI => {
+        url   => "/api",
+        title => "CF Online",
+    });
+
+
     $self->defaults(
         openapi_cors_allowed_origins => ['*']
     );
 
     # Router
     my $r = $self->routes;
-    $r->get('/')->to(cb => sub { shift->redirect_to('/api.html');});
+    $r->get('/')->to(cb => sub { shift->redirect_to('/swagger-ui');});
 
     $r->websocket('/ws')->to('Websockets#main');
 }
diff --git a/openapi.yaml b/openapi.yaml
index abc2f27..f32c79e 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -1,7 +1,7 @@
 openapi: 3.0.3
 
 info:
-  version: "2.0"
+  version: "2.6.1"
   title: CF Online
   description: CF Online
   license:
-- 
GitLab