on: workflow_call: inputs: SOURCE_REF: description: "Commit SHA that was pushed to ncmr-songs" required: true type: string SOURCE_BASE_REF: description: "Commit SHA before the push (all-zeros = first push)" required: true type: string FULL_PUBLISH: description: "Re-publish every file regardless of diff" required: false type: boolean default: false 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 ${{ inputs.SOURCE_REF }} - name: Checkout auto-wiki 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="${{ inputs.SOURCE_BASE_REF }}" HEAD="${{ inputs.SOURCE_REF }}" # All-zeros base means first push — publish everything 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 echo "Changed files:" 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: ${{ inputs.SOURCE_REF }} GITEA_REPO_URL: ${{ vars.URL_TO_GITEA }}/mikkeli/ncmr-songs run: | MODE="${{ steps.diff.outputs.mode }}" if [ "$MODE" = "all" ] || [ "${{ inputs.FULL_PUBLISH }}" = "true" ]; then python auto-wiki/pipelines/songs/publish.py \ --source-dir ncmr-songs \ --all else FILES="${{ steps.diff.outputs.files }}" if [ -z "$FILES" ]; then echo "No changed .md files detected. Nothing to publish." exit 0 fi # shellcheck disable=SC2086 python auto-wiki/pipelines/songs/publish.py \ --source-dir ncmr-songs \ --files $FILES fi