From 618c943867789406e43384eb21af1a580521a15d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=89douard=20Lopez?= <contact@edouard-lopez.com>
Date: Fri, 19 Jan 2024 20:44:13 +0100
Subject: [PATCH] ci: create docker workflow and ci to publish gh-pages

---
 .github/workflows/ci.yml  |  4 ++
 .github/workflows/doc.yml | 31 +++++++++++++++
 docker/doc.Dockerfile     | 20 +++-------
 docker/doc.old.Dockerfile | 17 ++++++++
 docs/mkdocs.yml           | 81 +++++++++++++++++++++++++++++++++++++++
 docs/requirements.txt     |  4 ++
 makefile                  | 24 ++++++++++--
 mkdocs.yml                |  2 +-
 8 files changed, 164 insertions(+), 19 deletions(-)
 create mode 100644 .github/workflows/doc.yml
 create mode 100644 docker/doc.old.Dockerfile
 create mode 100644 docs/mkdocs.yml
 create mode 100644 docs/requirements.txt

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2dec2914..9479f199 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -75,3 +75,7 @@ jobs:
     if: contains(github.ref, 'master')
     uses: ./.github/workflows/bump-version.yml
     secrets: inherit
+
+  publish-doc:
+    uses: ./.github/workflows/doc.yml
+    secrets: inherit
diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml
new file mode 100644
index 00000000..f49e64fb
--- /dev/null
+++ b/.github/workflows/doc.yml
@@ -0,0 +1,31 @@
+name: Publish docs via GitHub Pages
+on:
+  push:
+    branches:
+      - master
+    paths:
+      - docs/
+
+  pull_request:
+    # types:
+    #   - opened
+    #   - reopened
+    #   - synchronize
+    #   - ready_for_review
+    paths:
+      - docs/
+  workflow_call:
+
+jobs:
+  build:
+    name: Deploy docs
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repo
+        uses: actions/checkout@v4
+
+      - name: Deploy docs
+        uses: mhausenblas/mkdocs-deploy-gh-pages@master
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          REQUIREMENTS: docs/requirements.txt
diff --git a/docker/doc.Dockerfile b/docker/doc.Dockerfile
index df9b50e3..2f474abb 100644
--- a/docker/doc.Dockerfile
+++ b/docker/doc.Dockerfile
@@ -1,17 +1,7 @@
-FROM python:3
+FROM squidfunk/mkdocs-material:latest
 
-# Create app directory
-WORKDIR /usr/src/app
+COPY ./docs/requirements.txt /docs/
+RUN pip install -r ./requirements.txt
 
-RUN pip install \
-    mkdocs \
-    mkdocs-pdf-export-plugin \
-    mkdocs-material
-
-COPY . .
-
-# RUN mkdocs build
-
-EXPOSE 8000
-# CMD ["python", "-m", "http.server", "8000", "-d", "./site"]
-CMD ["mkdocs" "serve" "--clean"]
+ENTRYPOINT ["mkdocs"]
+CMD ["serve", "--dev-addr=0.0.0.0:8000"]
diff --git a/docker/doc.old.Dockerfile b/docker/doc.old.Dockerfile
new file mode 100644
index 00000000..df9b50e3
--- /dev/null
+++ b/docker/doc.old.Dockerfile
@@ -0,0 +1,17 @@
+FROM python:3
+
+# Create app directory
+WORKDIR /usr/src/app
+
+RUN pip install \
+    mkdocs \
+    mkdocs-pdf-export-plugin \
+    mkdocs-material
+
+COPY . .
+
+# RUN mkdocs build
+
+EXPOSE 8000
+# CMD ["python", "-m", "http.server", "8000", "-d", "./site"]
+CMD ["mkdocs" "serve" "--clean"]
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
new file mode 100644
index 00000000..9ac8bf0e
--- /dev/null
+++ b/docs/mkdocs.yml
@@ -0,0 +1,81 @@
+site_name: Pure.fish
+site_description: " Pretty, minimal and fast Fish 🐟 prompt"
+site_author: "Édouard Lopez"
+docs_dir: ./
+repo_name: "pure-fish/pure"
+repo_url: "https://github.com/pure-fish/pure"
+nav:
+  - Home: index.md
+theme:
+  # name: "material"
+  name: "material"
+  include_sidebar: true
+  features:
+    - navigation.tabs
+    - navigation.tracking
+    - navigation.expand
+    - navigation.indexes
+  # logo: pure.png
+  # favicon: pure.png
+  icon:
+    repo: fontawesome/brands/gitlab
+    admonition:
+      note: octicons/tag-16
+      abstract: octicons/checklist-16
+      info: octicons/info-16
+      tip: octicons/light-bulb-16
+      success: octicons/check-16
+      question: octicons/question-16
+      warning: octicons/alert-16
+      failure: octicons/x-circle-16
+      danger: octicons/zap-16
+      bug: octicons/bug-16
+      example: octicons/beaker-16
+      quote: octicons/quote-16
+  palette:
+    - scheme: default
+      primary: teal
+      accent: teal
+      toggle:
+        icon: material/toggle-switch-off-outline
+        name: Switch to dark mode
+    - scheme: slate
+      primary: teal
+      accent: teal
+      toggle:
+        icon: material/toggle-switch
+        name: Switch to light mode
+  font:
+    text: Open Sans
+    code: Roboto Mono
+
+extra:
+  analytics:
+    provider: google
+    property: G-LRFT4E69D4
+  social:
+    - icon: fontawesome/brands/slack
+      link: https://manomano-team.slack.com/archives/C02USRC7F9T
+
+markdown_extensions:
+  - admonition
+  # - attr_list
+  # - md_in_html
+  - pymdownx.details
+  - pymdownx.superfences
+  - pymdownx.tabbed:
+      alternate_style: true
+  - pymdownx.highlight
+  - pymdownx.inlinehilite
+  - pymdownx.snippets
+  - pymdownx.emoji:
+      emoji_index: !!python/name:material.extensions.emoji.twemoji
+      emoji_generator: !!python/name:materialx.emoji.to_svg
+        #   - toc:
+        #       permalink: true
+
+
+plugins:
+  - search
+  - awesome-pages
+  - include-markdown
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 00000000..354c7c38
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,4 @@
+pymdown-extensions
+mkdocs-material
+mkdocs-awesome-pages-plugin
+mkdocs-include-markdown-plugin
diff --git a/makefile b/makefile
index 33e3bf81..588f5538 100644
--- a/makefile
+++ b/makefile
@@ -89,14 +89,14 @@ test-pure-on-nix:
 	$(MAKE) dev-pure-on-nix CMD="${CMD}" TTY=
 
 
-build-pure-doc:
+build-pure-doc-old:
 	docker build \
-		--file ./docker/doc.Dockerfile \
+		--file ./docker/doc.old.Dockerfile \
 		--tag=pure-doc \
 		--load \
 		./
 
-serve-pure-doc:
+serve-pure-doc-old:
 	docker run \
 		--name mkdocs \
 		--tty \
@@ -108,3 +108,21 @@ serve-pure-doc:
 		--env ADD_MODULES="pymdown-extensions mkdocs-material mkdocs-awesome-pages-plugin mkdocs-include-markdown-plugin" \
 		--volume=$$(pwd):/mkdocs \
 		polinux/mkdocs
+
+serve-pure-doc:
+	docker run \
+		--name mkdocs \
+		--tty \
+		--interactive \
+		--rm \
+		--publish 8000:8000 \
+		--volume=$$(pwd):/docs \
+        pure-doc
+
+
+build-pure-doc:
+	docker build \
+		--file ./docker/doc.Dockerfile \
+		--tag=pure-doc \
+		--load \
+        ./
diff --git a/mkdocs.yml b/mkdocs.yml
index 94cb99f1..155dde8c 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -69,7 +69,7 @@ markdown_extensions:
   - pymdownx.inlinehilite
   - pymdownx.snippets
   - pymdownx.emoji:
-      emoji_index: !!python/name:materialx.emoji.twemoji
+      emoji_index: !!python/name:material.extensions.emoji.twemoji
       emoji_generator: !!python/name:materialx.emoji.to_svg
         #   - toc:
         #       permalink: true