name: 'Mirror' description: 'Test and Mirror AUR Packages' inputs: pkgbase: description: 'The pkgbase from the AUR.' required: false ssh_key: description: 'The base64-part of the private key to upload to the AUR.' required: true runs: using: "composite" steps: - name: Test AUR package uses: docker://docker.io/library/archlinux:base-devel with: entrypoint: bash args: | -exuo pipefail -c ' pacman -Syu --noconfirm git useradd -m user echo "user ALL=(ALL:ALL) NOPASSWD: ALL" >/etc/sudoers.d/user sudo -u user -- bash -c "cd ~ && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si --noconfirm" echo "#!/bin/bash -ex" >/usr/local/bin/yay.sh echo "sudo -u user -- yay \"\${@}\"" >>/usr/local/bin/yay.sh chmod +x /usr/local/bin/yay.sh chmod 777 . sudo -u user PACMAN="/usr/local/bin/yay.sh" makepkg -s --noconfirm sudo -u user makepkg --printsrcinfo >.SRCINFO.new ' - name: Ensure .SRCINFO is up to date run: diff -u .SRCINFO .SRCINFO.new - name: Mirror to the AUR run: | mkdir -p ~/.ssh echo "-----BEGIN OPENSSH PRIVATE KEY-----" >~/.ssh/ssh_key echo '${{inputs.ssh_key}}' >>~/.ssh/ssh_key echo "-----END OPENSSH PRIVATE KEY-----" >>~/.ssh/ssh_key echo 'aur.archlinux.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuBKrPzbawxA/k2g6NcyV5jmqwJ2s+zpgZGZ7tpLIcN' >>~/.ssh/known_hosts chmod 700 ~/.ssh chmod 600 ~/.ssh/* pkgbase='${{inputs.pkgbase}}' [ -n "$pkgbase" ] || pkgbase="$( (. PKGBUILD && printf '%s' "$pkgbase") )" [ -n "$pkgbase" ] || pkgbase="$( (. PKGBUILD && printf '%s' "$pkgname") )" pkgver="$( (. PKGBUILD && printf '%s' "$pkgver") )" pkgrel="$( (. PKGBUILD && printf '%s' "$pkgrel") )" [ -n "$pkgbase" ] || \ ( echo "Failed to determine pkgbase"; exit 1 ) [ "${{github.ref_name}}" == "main" ] || [ "${{github.ref_name}}" == "master" ] || \ ( echo "Git ref is neither main nor master, aborting"; exit 1 ) || exit 0 export GIT_SSH_COMMAND='ssh -i ~/.ssh/ssh_key -o IdentitiesOnly=yes' git clone "ssh://aur@aur.archlinux.org/$pkgbase.git" aur find aur -maxdepth 1 -type f \ | while read file do echo "Removing old file $file ..." rm -f "$file" done git ls-tree --name-only HEAD \ | while read file do if [ -f "$file" ] then echo "Copying new file $file ..." cp "$file" aur fi done cd aur git add . git config user.name "${{github.event.head_commit.committer.name}}" git config user.email "${{github.event.head_commit.committer.email}}" git commit -m "$(echo -e "$pkgbase $pkgver-$pkgrel\n${{github.event.head_commit.url}}")" \ --author "${{github.event.head_commit.author.name}} <${{github.event.head_commit.author.email}}>" git show HEAD echo git push aur "${{github.ref_name}}:master"