name: Sync Flasher Docs & Changelog

# Pushes the observer docs and the regenerated changelog to the flasher site
# WITHOUT rebuilding firmware. Companion to build-observer-firmwares.yml:
#   - code changes        -> build-observer-firmwares.yml (builds + syncs everything)
#   - doc / markdown edits -> this workflow (fast sync only, no firmware rebuild)
# Keep the synced file list and trigger paths in step with the build workflow's
# "Sync Docs into Flasher" step and with LOCAL_DOCS in flasher/docs.html.

permissions:
  contents: read

on:
  workflow_dispatch:
  push:
    branches:
      - mqtt-bridge-implementation-flex
    paths:
      - '**.md'
      - 'docs/**'
      - 'scripts/gen_changelog.py'

# Shared with build-observer-firmwares.yml so the two never push to the flasher
# repo concurrently (a mixed code+docs commit can trigger both).
concurrency:
  group: flasher-publish
  cancel-in-progress: false

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: Clone Repo
        uses: actions/checkout@v4
        with:
          # full history so scripts/gen_changelog.py can read the branch commit log
          fetch-depth: 0

      - name: Checkout Flasher Repo
        uses: actions/checkout@v4
        with:
          repository: agessaman/flasher.meshcore.io
          token: ${{ secrets.FLASHER_DISPATCH_TOKEN }}
          path: flasher

      - name: Sync Docs into Flasher
        run: |
          # docs.html on the flasher site serves these raw .md files and renders
          # them client-side; keep this list in sync with LOCAL_DOCS in
          # flasher/docs.html and the build workflow's sync step.
          for f in MQTT_IMPLEMENTATION.md MQTT_SNMP.md ALERTS.md; do
            if [ -f "$f" ]; then
              cp -f "$f" "flasher/$f"
              echo "synced $f"
            else
              echo "WARNING: source doc $f not found" >&2
            fi
          done

      - name: Generate Changelog
        run: |
          # Append-only and idempotent; preserves the hand-curated history and
          # hash manifest already in flasher/CHANGELOG.md. changelog.html renders it.
          python3 scripts/gen_changelog.py flasher/CHANGELOG.md

      - name: Commit & Push Flasher Content
        working-directory: flasher
        run: |
          if git diff --quiet; then
            echo "No flasher changes to commit."
            exit 0
          fi
          git config user.name "meshcore-bot"
          git config user.email "noreply@gessaman.com"
          git commit -am "Sync docs & changelog from MeshCore ${GITHUB_SHA::7}"
          git push
