diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 816bb6d..57e542d 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -20,6 +20,9 @@ jobs: http://47.121.181.112:3000/wonder/illustrated-algorithm.git \ /tmp/illustrated-algorithm + - name: Generate Navigation + run: sh /tmp/illustrated-algorithm/generate-nav.sh /tmp/illustrated-algorithm + - name: Build Docker Image run: | docker build \ diff --git a/Dockerfile b/Dockerfile index fa61f3e..d145e76 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,19 @@ -FROM nginx:alpine - -# Copy nginx config first (changes less often → cached layer) -COPY nginx.conf /etc/nginx/conf.d/default.conf - -# Copy site content -COPY . /usr/share/nginx/html/ - -# Remove non-web files from the image -RUN rm -rf /usr/share/nginx/html/.git \ - /usr/share/nginx/html/.gitea \ - /usr/share/nginx/html/.dockerignore \ - /usr/share/nginx/html/Dockerfile \ - /usr/share/nginx/html/LICENSE \ - /usr/share/nginx/html/README.md - -EXPOSE 80 -CMD ["nginx", "-g", "daemon off;"] + /usr/share/nginx/html/generate-nav.sh \F /usr/share/nginx/html/generate-nav.sh \R /usr/share/nginx/html/generate-nav.sh \O /usr/share/nginx/html/generate-nav.sh \M /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \: /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \p /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \# /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \p /usr/share/nginx/html/generate-nav.sh \y /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \( /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \→ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \y /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \) /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \O /usr/share/nginx/html/generate-nav.sh \P /usr/share/nginx/html/generate-nav.sh \Y /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \# /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \p /usr/share/nginx/html/generate-nav.sh \y /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \O /usr/share/nginx/html/generate-nav.sh \P /usr/share/nginx/html/generate-nav.sh \Y /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \# /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \R /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \v /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \- /usr/share/nginx/html/generate-nav.sh \w /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \b /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \R /usr/share/nginx/html/generate-nav.sh \U /usr/share/nginx/html/generate-nav.sh \N /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \- /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \\ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \\ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \k /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \\ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \D /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \c /usr/share/nginx/html/generate-nav.sh \k /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \\ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \L /usr/share/nginx/html/generate-nav.sh \I /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \N /usr/share/nginx/html/generate-nav.sh \S /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \\ /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \u /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \s /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \r /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \h /usr/share/nginx/html/generate-nav.sh \t /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \l /usr/share/nginx/html/generate-nav.sh \/ /usr/share/nginx/html/generate-nav.sh \R /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \A /usr/share/nginx/html/generate-nav.sh \D /usr/share/nginx/html/generate-nav.sh \M /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \. /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \X /usr/share/nginx/html/generate-nav.sh \P /usr/share/nginx/html/generate-nav.sh \O /usr/share/nginx/html/generate-nav.sh \S /usr/share/nginx/html/generate-nav.sh \E /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \8 /usr/share/nginx/html/generate-nav.sh \0 /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \C /usr/share/nginx/html/generate-nav.sh \M /usr/share/nginx/html/generate-nav.sh \D /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \[ /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \i /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \x /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \, /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \- /usr/share/nginx/html/generate-nav.sh \g /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \, /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \d /usr/share/nginx/html/generate-nav.sh \a /usr/share/nginx/html/generate-nav.sh \e /usr/share/nginx/html/generate-nav.sh \m /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \n /usr/share/nginx/html/generate-nav.sh \ /usr/share/nginx/html/generate-nav.sh \o /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \f /usr/share/nginx/html/generate-nav.sh \; /usr/share/nginx/html/generate-nav.sh \" /usr/share/nginx/html/generate-nav.sh \] /usr/share/nginx/html/generate-nav.sh \ + /usr/share/nginx/html/generate-nav.sh \ \ No newline at end of file diff --git a/generate-nav.sh b/generate-nav.sh new file mode 100644 index 0000000..d0c565d --- /dev/null +++ b/generate-nav.sh @@ -0,0 +1,96 @@ +#!/bin/sh +# Auto-generate index.html navigation page based on subdirectories + +TARGET_DIR="${1:-.}" +OUTPUT="${TARGET_DIR}/index.html" + +cat > "$OUTPUT" << 'HEADER' + + + + + + 图解算法 - 导航 + + + +
+

📚 图解算法

+

知识可视化集合

+
+HEADER + +# Scan subdirectories with index.html +for dir in "$TARGET_DIR"/*/; do + [ -d "$dir" ] || continue + name=$(basename "$dir") + [ "$name" = ".git" ] && continue + [ "$name" = ".gitea" ] && continue + [ -f "$dir/index.html" ] || continue + + # Try to extract title from index.html + title=$(grep -oP '(?<=)[^<]+' "$dir/index.html" 2>/dev/null | head -1) + [ -z "$title" ] && title="$name" + + echo " <a class=\"card\" href=\"/$name/\">" >> "$OUTPUT" + echo " <span class=\"card-icon\">📄</span>" >> "$OUTPUT" + echo " <div>" >> "$OUTPUT" + echo " <div class=\"card-title\">$title</div>" >> "$OUTPUT" + echo " <div class=\"card-dir\">/$name</div>" >> "$OUTPUT" + echo " </div>" >> "$OUTPUT" + echo " </a>" >> "$OUTPUT" +done + +# Check if any cards were added +if ! grep -q 'class="card"' "$OUTPUT"; then + echo " <p class=\"empty">暂无页面</p>" >> "$OUTPUT" +fi + +cat >> "$OUTPUT" << 'FOOTER' + </div> + <footer>Powered by QwenPaw · 自动生成</footer> + </div> +</body> +</html> +FOOTER diff --git a/nginx.conf b/nginx.conf index 366fdeb..8a83466 100644 --- a/nginx.conf +++ b/nginx.conf @@ -15,11 +15,8 @@ server { add_header Cache-Control "public, no-transform"; } - # Auto-index at root for listing available pages location / { - autoindex on; - autoindex_exact_size off; - autoindex_localtime on; + try_files $uri $uri/ =404; } # Each subdirectory serves its page