name: Sync AUR Packages on: schedule: # Every 6 hours - cron: '0 */6 * * *' workflow_dispatch: inputs: packages: description: 'Specific packages to sync (space-separated, leave empty for all)' required: false default: '' jobs: sync: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - name: Checkout repository uses: actions/checkout@v4 with: persist-credentials: false - name: Sync AUR packages run: | docker run --rm \ -e PACKAGES="$PACKAGES" \ -e HOST_UID="$(id -u)" \ -e HOST_GID="$(id -g)" \ -v "$PWD/bin:/workspace/bin:ro" \ -v "$PWD/helpers:/workspace/helpers:ro" \ -v "$PWD/pkgbuilds:/workspace/pkgbuilds" \ -w /workspace \ archlinux:base-devel bash -lc ' set -euo pipefail pacman -Syu --noconfirm git jq groupadd -g "$HOST_GID" runner useradd -m -u "$HOST_UID" -g "$HOST_GID" runner chown -R runner:runner /workspace/pkgbuilds if [[ -n "${PACKAGES:-}" ]]; then read -r -a package_args <<< "$PACKAGES" runuser -u runner -- ./bin/sync-aur "${package_args[@]}" else runuser -u runner -- ./bin/sync-aur fi ' env: PACKAGES: ${{ github.event.inputs.packages }} - name: Check for changes id: changes run: | if [ -z "$(git status --porcelain)" ]; then echo "has_changes=false" >> "$GITHUB_OUTPUT" else echo "has_changes=true" >> "$GITHUB_OUTPUT" fi - name: Create Pull Request if: steps.changes.outputs.has_changes == 'true' uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: 'chore: sync AUR packages' title: 'chore: sync AUR packages' body: | Automated AUR package sync. Package sync behavior is controlled by `.omarchy/package.json`. branch: auto/sync-aur delete-branch: true labels: automated reviewers: ryanrhughes - name: Notify Basecamp on failure if: failure() && env.BASECAMP_CHATBOT_URL != '' env: BASECAMP_CHATBOT_URL: ${{ secrets.BASECAMP_CHATBOT_URL }} run: | curl -s -o /dev/null \ -H "Content-Type: application/json" \ -d "$(jq -n --arg content \ "🔴 AUR sync failed
View run" \ '{content: $content}')" \ "$BASECAMP_CHATBOT_URL"