From 97898e9ea0f816cf0dc301f7fa66c588594eb3da Mon Sep 17 00:00:00 2001
From: Mikhail Vanyulin <mikhail.vanyulin@rtsoft.de>
Date: Fri, 1 Mar 2024 14:24:10 +0100
Subject: [PATCH] convert_md2html: use gitlab api

Update convert_md2html.py to use gitlab api with gitlab flavor.

Signed-off-by: Mikhail Vanyulin <mikhail.vanyulin@rtsoft.de>
---
 build-pipeline.yml         |  6 +++-
 scripts/convert_md2html.py | 57 ++++++++++++++++++++++++++------------
 2 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/build-pipeline.yml b/build-pipeline.yml
index fb8f3536..62d1d3ab 100644
--- a/build-pipeline.yml
+++ b/build-pipeline.yml
@@ -281,7 +281,11 @@ workflow:
   timeout: 5m
   script:
     - for file in ${FILES}; do
-        .gitlab-ci/scripts/convert_md2html.py $file;
+        .gitlab-ci/scripts/convert_md2html.py
+          --gitlab-url=${CI_SERVER_URL}
+          --token=${GITBOT_TOKEN}
+          --project=${CI_PROJECT_PATH}
+          --filename $file;
       done
   artifacts:
     paths:
diff --git a/scripts/convert_md2html.py b/scripts/convert_md2html.py
index b13afb93..83f5c4d6 100755
--- a/scripts/convert_md2html.py
+++ b/scripts/convert_md2html.py
@@ -1,11 +1,12 @@
 #!/usr/bin/env python3
 
 import argparse
-import codecs
 import glob
 import os
 
-from markdown2 import markdown_path
+from gitlab.client import Gitlab
+
+import common
 
 HEADER = """
 <!doctype html>
@@ -178,35 +179,55 @@ FOOTER = """
 """
 
 
-def convertmd2html(infile, outfile):
-
-    encoding = "utf-8"
-
-    fout = codecs.open(outfile, "w", encoding)
-
-    fout.write(HEADER)
-    extras = {"tables": ""}
-    html = markdown_path(infile, extras=extras)
-    fout.write(html)
-
-    fout.write(FOOTER)
-
-
 def main():
     parser = argparse.ArgumentParser()
     parser.add_argument(
-        "filename",
+        "--gitlab-url",
+        help="""URL to the GitLab instance""",
+        dest="gitlab_url",
+        default=common.GITLAB_URL,
+        required=True,
+    )
+    parser.add_argument(
+        "--token",
+        help="""GitLab REST API private access token""",
+        dest="token",
+        required=True,
+    )
+    parser.add_argument(
+        "--project",
+        help="""name of the GitLab project""",
+        dest="project",
+        required=True,
+    )
+    parser.add_argument(
+        "--filename",
         help="""File(s) to convert""",
         nargs="+",
+        required=True,
     )
 
     args, _ = parser.parse_known_args()
 
+    gitlab = Gitlab(args.gitlab_url, private_token=args.token)
+
+    encoding = "utf-8"
+
     for filename in args.filename:
         for input_filename in glob.glob(filename):
             output_filename = f"{os.path.splitext(input_filename)[0]}.html"
             print(f"Converting {input_filename} to {output_filename}")
-            convertmd2html(input_filename, output_filename)
+
+            fin = open(input_filename, encoding=encoding)
+            fout = open(output_filename, "w", encoding=encoding)
+
+            fout.write(HEADER)
+            html = gitlab.markdown(fin.read(), True, args.project)
+            fout.write(html)
+            fout.write(FOOTER)
+
+            fin.close()
+            fout.close()
 
 
 if __name__ == "__main__":
-- 
GitLab