From 5515ff2d18f8895b165eb0b7d6c1048b7b0eaa4f Mon Sep 17 00:00:00 2001
From: "Glenn Y. Rolland" <glenux@glenux.net>
Date: Fri, 28 Jan 2022 18:41:34 +0100
Subject: [PATCH] feat: handle mkdocs patching

---
 docker/Dockerfile               |  6 ++++++
 docker/entrypoint.sh            | 10 ++++++++++
 mkdocs.yml => mkdocs-source.yml |  0
 scripts/gx-teaching             | 11 ++++++++---
 4 files changed, 24 insertions(+), 3 deletions(-)
 rename mkdocs.yml => mkdocs-source.yml (100%)

diff --git a/docker/Dockerfile b/docker/Dockerfile
index d9d7291..a57fe64 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -21,6 +21,12 @@ RUN apt-get update \
  && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
  && truncate -s 0 /var/log/*log
 
+# External tools
+# yq => manage YML
+RUN curl -o /usr/local/bin/yq \
+         https://github.com/mikefarah/yq/releases/download/v4.18.1/yq_linux_amd64 \
+ && chmod +x /usr/local/bin/yq
+
 COPY . /app
 WORKDIR /app
 
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index ce4c0a4..3726fec 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -30,6 +30,16 @@ chown -R "$EXT_UID:$EXT_GID" _build
 chown -R "$EXT_UID:$EXT_GID" .marp
 chown -R "$EXT_UID:$EXT_GID" /home/appuser
 
+# Patch mkdocs configuration 
+if [ -f mkdocs-patch.yml ]; then
+  yq \
+  	  eval-all
+  	  '. as $item ireduce ({}; . * $item)' \
+  	  mkdocs-source.yml \
+  	  mkdocs-patch.yml \
+  	  > mkdocs.yml
+fi
+
 if [ "$1" = "shell" ]; then
 	exec bash
 else
diff --git a/mkdocs.yml b/mkdocs-source.yml
similarity index 100%
rename from mkdocs.yml
rename to mkdocs-source.yml
diff --git a/scripts/gx-teaching b/scripts/gx-teaching
index 0a97b14..101b337 100755
--- a/scripts/gx-teaching
+++ b/scripts/gx-teaching
@@ -77,10 +77,15 @@ else
 fi
 
 if [ -f "$BASEDIR/mkdocs.yml" ]; then
-	DOCKER_OPT_MKDOCS_CONFIG="-v $BASEDIR/mkdocs.yml:/app/mkdocs.yml"
-	echo "Mkdocs: detected mkdocs.yml file. Adding option to command line ($DOCKER_OPT_MKDOCS_CONFIG)"
+	>&2 echo "Mkdocs: detected mkdocs.yml file. Please rename to mkdocs-patch.yml"
+	exit 1
+fi
+
+if [ -f "$BASEDIR/mkdocs-patch.yml" ]; then
+	DOCKER_OPT_MKDOCS_CONFIG="-v $BASEDIR/mkdocs.yml:/app/mkdocs-patch.yml"
+	echo "Mkdocs: detected mkdocs-patch.yml file. Adding option to command line ($DOCKER_OPT_MKDOCS_CONFIG)"
 else
-	echo "Mkdocs: no mkdocs.yml detected. Using default files"
+	echo "Mkdocs: no mkdocs-patch.yml detected. Using default files"
 fi
 
 if [ -d "$BASEDIR/slides" ]; then