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 }}