#!/usr/bin/env bash # publish-aur.sh PKGNAME — adapted from timfa/legacy-cycles. # Runs in the tag pipeline after `release`: downloads this tag's .deb release # asset, sets pkgver/_tag/sha256sums in packaging/aur/PKGNAME/PKGBUILD, # regenerates .SRCINFO and pushes to aur.archlinux.org (the first push creates # the AUR package). Uses AUR_GIT_AUTHOR_NAME / AUR_GIT_AUTHOR_EMAIL; the SSH # key comes from aur-ssh-setup.sh (AUR_SSH_PRIVATE_KEY_B64). set -euo pipefail pkg="$1" ROOT="$(cd "$(dirname "$0")/../.." && pwd)" SRC="$ROOT/packaging/aur/$pkg" : "${CI_COMMIT_TAG:?}" "${CI_PROJECT_URL:?}" "${AUR_GIT_AUTHOR_NAME:?}" "${AUR_GIT_AUTHOR_EMAIL:?}" tag="$CI_COMMIT_TAG" [[ "$tag" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] || { echo "not a release tag: $tag" >&2; exit 1; } ver="${tag#v}" url="$CI_PROJECT_URL/-/releases/$tag/assets/paperdoll-renderer-${tag}-amd64.deb" WORKDIR="$(mktemp -d)"; export WORKDIR trap 'rm -rf "$WORKDIR"' EXIT curl -fsSL "$url" -o "$WORKDIR/asset.deb" sha="$(sha256sum "$WORKDIR/asset.deb" | awk '{print $1}')" echo "$pkg $ver $url $sha" dest="$WORKDIR/$pkg" remote="ssh://aur@aur.archlinux.org/${pkg}.git" if ! git clone "$remote" "$dest"; then echo "AUR repo $pkg does not exist yet; the first push creates it" mkdir -p "$dest"; git -C "$dest" init -q -b master; git -C "$dest" remote add origin "$remote" fi git -C "$dest" symbolic-ref HEAD refs/heads/master find "$dest" -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} + cp -a "$SRC/." "$dest/" cd "$dest" sed -i "s/^pkgver=.*/pkgver=${ver}/; s/^pkgrel=.*/pkgrel=1/; s/^_tag=.*/_tag=${tag}/; s/^sha256sums=.*/sha256sums=('${sha}')/" PKGBUILD useradd -m aurbuild 2>/dev/null || true chmod 755 "$WORKDIR"; chown -R aurbuild "$dest" runuser -u aurbuild -- makepkg --printsrcinfo > "$WORKDIR/srcinfo" mv "$WORKDIR/srcinfo" .SRCINFO chown -R root:root "$dest" git config --global --add safe.directory '*' git config user.name "$AUR_GIT_AUTHOR_NAME" git config user.email "$AUR_GIT_AUTHOR_EMAIL" git add -A if git diff --cached --quiet; then echo "AUR $pkg already up to date ($ver)"; exit 0; fi git commit -qm "$ver" git push -u origin HEAD:master echo "AUR updated: $pkg $ver"