name: 📝 Update Documentation

# This will run whenever the /docs directory in master branch is updated,
# or if the workflow is manually dispatched, plus a sync check on Sun at 03:30 UTC
on:
  workflow_dispatch:
  schedule:
    - cron: '30 3 * * 0'
  push:
    branches:
      - master
    paths:
      - 'docs/**'


# Jobs to be run:
# 1. Checkout master branch
# 2. Checkout website source code branch
# 3. Install Python and Node.js
# 4. Install website dependencies (Docusaurus)
# 5. Copy /docs from master to website branch
# 6. Run the script which processes documentation and tests the build
# 7. Commit and push updated docs to the website source code branch
jobs:
  update-docs:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout master branch 🛎️
        uses: actions/checkout@v6
        with:
          path: 'master-docs'
          token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}

      - name: Checkout WEBSITE/docs-site-source branch 🛎️
        uses: actions/checkout@v6
        with:
          ref: 'WEBSITE/docs-site-source'
          path: 'website-docs'
          fetch-depth: 0
          token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}

      - name: Install Python 🐍
        uses: actions/setup-python@v6
        with:
          python-version: '3.x'

      - name: Setup Node.js 🟢
        uses: actions/setup-node@v6
        with:
          node-version: '22'

      - name: Install website dependencies 📦
        working-directory: website-docs
        run: yarn install --frozen-lockfile

      - name: Run script to update documentation 🪄
        working-directory: website-docs
        run: |
          cp -r ../master-docs/docs ./
          python ./do-doc-updaty-magic.py

      - name: Commit changes 🚀
        run: |
          cd website-docs
          git config --local user.email "liss-bot@d0h.co"
          git config --local user.name "Liss-Bot"
          git add docs
          git commit -m "Update documentation" || echo "No changes to commit"
          git pull --rebase || (git rebase --abort && exit 1)
          git push
        env:
          GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
