---
# $schema: "https://json.schemastore.org/github-workflow.json"
name: Update submodules

on:
  schedule:
    # At 04:00 on Monday and Thursday.
    - cron: '0 4 * * 1'
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions: read-all

jobs:
  update-submodules:
    runs-on: self-hosted

    permissions: write-all

    steps:
      - name: Checkout repository
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
        with:
          submodules: true
          fetch-depth: 2
          token: ${{secrets.GITHUB_TOKEN}}

      - name: Config Git User
        shell: bash
        run: |
          git config --global user.name "${{ github.actor }}"
          git config --global user.email "${{ github.actor }}@users.noreply.github.com"

      - name: Update submodules
        shell: bash
        run: |
          git submodule sync
          git submodule foreach --quiet "
            tag=\"$(git describe --tags --abbrev=0 origin/HEAD)\"
            if [ \"$(git describe --tags)\" != \"$tag\" ]; then
              git checkout --quiet \"$tag\"
              echo \"$name updated to $tag\"
            fi
          "

          if git diff --quiet; then
            echo "No updates for submodules."
          else
            git add .
            git commit -m "chore(git): Update submodules (automated)"
            git show --raw
            git push
          fi
