commit 339e0d0e1bf51904647b5c15809d2cc668542605 Author: William Söderberg Date: Tue Oct 13 10:51:43 2026 +0200 Init diff --git a/.gitea/workflows/docker-publish.yml b/.gitea/workflows/docker-publish.yml new file mode 100644 index 0000000..fffd194 --- /dev/null +++ b/.gitea/workflows/docker-publish.yml @@ -0,0 +1,44 @@ +name: Publish Docker image + +on: + release: + types: [published] + push: + tags: + - "v*" + +jobs: + push_to_registry: + name: Build and Push Docker image + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: git.stws.cc + username: ${{ github.actor }} + password: ${{ secrets.REGISTRY_TOKEN }} + + - name: Extract metadata (tags, labels) + id: meta + uses: docker/metadata-action@v5 + with: + images: git.stws.cc/${{ github.repository }} + tags: | + type=ref,event=tag + type=raw,value=latest + + - name: Build and push Docker images + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..debbab5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine:latest + +RUN apk add --no-cache curl jq unzip + +COPY sync-theme.sh /usr/local/bin/sync-theme.sh +RUN chmod +x /usr/local/bin/sync-theme.sh + +ENTRYPOINT ["/usr/local/bin/sync-theme.sh"] \ No newline at end of file diff --git a/sync-theme.sh b/sync-theme.sh new file mode 100644 index 0000000..a4a7d4f --- /dev/null +++ b/sync-theme.sh @@ -0,0 +1,49 @@ +#!/bin/sh +set -e + +TARGET_DIR="/data/gitea" +CHECK_INTERVAL=${CHECK_INTERVAL:-86400} # Default: re-check every 24 hours + +sync_theme() { + echo "[Theme Syncer] Checking for latest theme release..." + RELEASE_JSON=$(curl -s https://api.github.com/repos/lutinglt/gitea-github-theme/releases/latest) + + TAG_NAME=$(echo "$RELEASE_JSON" | jq -r '.tag_name // empty') + if [ -z "$TAG_NAME" ] || [ "$TAG_NAME" = "null" ]; then + echo "[Theme Syncer] Could not reach GitHub API or parse release. Will retry later." + return 0 + fi + + echo "[Theme Syncer] Processing theme release: $TAG_NAME" + + CSS_URLS=$(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name | endswith(".css")) | .browser_download_url') + TMPL_URL=$(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name | test("template.*\\.zip")) | .browser_download_url' | head -n 1) + + mkdir -p "$TARGET_DIR/public/assets/css" "$TARGET_DIR/templates" + + for url in $CSS_URLS; do + fname=$(basename "$url") + echo "[Theme Syncer] Syncing CSS: $fname" + curl -sL "$url" -o "$TARGET_DIR/public/assets/css/$fname" + done + + if [ -n "$TMPL_URL" ] && [ "$TMPL_URL" != "null" ]; then + echo "[Theme Syncer] Syncing templates..." + curl -sL "$TMPL_URL" -o /tmp/templates.zip + unzip -qo /tmp/templates.zip -d "$TARGET_DIR/templates/" + rm -f /tmp/templates.zip + fi + + if [ -n "$USER_UID" ] && [ -n "$USER_GID" ]; then + chown -R "$USER_UID:$USER_GID" "$TARGET_DIR/public" "$TARGET_DIR/templates" + fi + + echo "[Theme Syncer] Sync complete for $TAG_NAME." +} + +sync_theme + +while true; do + sleep "$CHECK_INTERVAL" + sync_theme +done \ No newline at end of file