on: push: branches: [master] paths-ignore: - "wip/**" - "README.md" - ".gitignore" - ".claude/**" jobs: publish: runs-on: ubuntu-latest container: image: python:3.12-slim steps: - name: Install system deps run: apt-get update -qq && apt-get install -y --no-install-recommends git pandoc ca-certificates - name: Checkout ncmr-songs env: FAPAT: ${{ secrets.FAPAT }} URL_TO_GITEA: ${{ vars.URL_TO_GITEA }} run: | git clone "http://mikkeli:${FAPAT}@${URL_TO_GITEA#http://}/mikkeli/ncmr-songs" ncmr-songs git -C ncmr-songs checkout ${{ github.sha }} - name: Checkout auto-wiki (renderer) env: FAPAT: ${{ secrets.FAPAT }} URL_TO_GITEA: ${{ vars.URL_TO_GITEA }} run: git clone "http://mikkeli:${FAPAT}@${URL_TO_GITEA#http://}/mikkeli/novoyuuparosk-auto-wiki" auto-wiki - name: Install Python deps run: pip install --no-cache-dir -r auto-wiki/pipelines/songs/requirements.txt - name: Detect changed files id: diff run: | BASE="${{ github.event.before }}" HEAD="${{ github.sha }}" if [ -z "$BASE" ] || echo "$BASE" | grep -qE '^0+$'; then echo "mode=all" >> "$GITHUB_OUTPUT" else git -C ncmr-songs diff --name-only "$BASE" "$HEAD" -- '*.md' \ | grep -v '^wip/' | grep -v '^README\.md' \ > /tmp/changed.txt 2>/dev/null || true cat /tmp/changed.txt echo "mode=incremental" >> "$GITHUB_OUTPUT" echo "files=$(tr '\n' ' ' < /tmp/changed.txt)" >> "$GITHUB_OUTPUT" fi - name: Publish env: WIKI_API_URL: ${{ vars.WIKI_API_URL }} WIKI_BASE_URL: ${{ vars.WIKI_BASE_URL }} WIKI_BOT_USER: ${{ secrets.WIKI_BOT_USER }} WIKI_BOT_PASSWORD: ${{ secrets.WIKI_BOT_PASSWORD }} SOURCE_REF: ${{ github.sha }} GITEA_REPO_URL: ${{ vars.URL_TO_GITEA }}/mikkeli/ncmr-songs run: | if [ "${{ steps.diff.outputs.mode }}" = "all" ]; then python auto-wiki/pipelines/songs/render.py --source-dir ncmr-songs --all else FILES="${{ steps.diff.outputs.files }}" if [ -z "$FILES" ]; then echo "No changed .md files. Nothing to publish." exit 0 fi # shellcheck disable=SC2086 python auto-wiki/pipelines/songs/render.py --source-dir ncmr-songs --files $FILES fi