panache 2.43.1

An LSP, formatter, and linter for Markdown, Quarto, and R Markdown
name: Update AUR

on:
  release:
    types:
      - published
  workflow_dispatch:
    inputs:
      version:
        description: "Version to update (e.g., 2.8.1, leave empty for latest release)"
        required: false
        type: string

jobs:
  trigger-aur-update:
    name: Trigger AUR Update
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'release' && startsWith(github.event.release.tag_name, 'v')) }}

    steps:
      - name: Get latest release
        if: github.event_name == 'workflow_dispatch' && inputs.version == ''
        id: latest
        run: |
          LATEST=$(gh api repos/${{ github.repository }}/releases --jq '[.[] | select(.draft == false and .prerelease == false and (.tag_name | startswith("v")))] | .[0].tag_name')
          echo "version=$LATEST" >> $GITHUB_OUTPUT
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Get version from release event
        if: github.event_name == 'release'
        id: release_version
        run: |
          echo "version=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Wait for release binaries
        if: github.event_name == 'release'
        run: |
          RELEASE_ID="${{ github.event.release.id }}"
          REQUIRED_ASSET="panache-x86_64-unknown-linux-gnu.tar.gz"
          ATTEMPTS=20
          SLEEP_SECONDS=15

          for i in $(seq 1 "$ATTEMPTS"); do
            ASSET_FOUND=$(gh api repos/${{ github.repository }}/releases/"$RELEASE_ID"/assets \
              --jq '[.[].name] | any(. == "'"$REQUIRED_ASSET"'")')

            if [ "$ASSET_FOUND" = "true" ]; then
              echo "Found required asset: $REQUIRED_ASSET"
              exit 0
            fi

            if [ "$i" -lt "$ATTEMPTS" ]; then
              echo "Asset not available yet (attempt $i/$ATTEMPTS), retrying in ${SLEEP_SECONDS}s..."
              sleep "$SLEEP_SECONDS"
            fi
          done

          echo "Required release asset '$REQUIRED_ASSET' is still missing; skipping AUR dispatch."
          exit 1
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Trigger AUR repository
        if: ${{ inputs.version != '' || steps.latest.outputs.version != '' || steps.release_version.outputs.version != '' }}
        run: |
          VERSION="${{ inputs.version || steps.latest.outputs.version || steps.release_version.outputs.version }}"
          VERSION="${VERSION#v}"  # Remove plain 'v' prefix if present
          gh api repos/jolars/panache-aur/dispatches \
            -f event_type=new-release \
            -f client_payload[version]="$VERSION"
        env:
          GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}