#!/usr/bin/env bash pkgfilename() ( BUILDFILE="$(realpath -ms -- "$1")" . "$BUILDFILE" echo $pkgname-$pkgver-$pkgrel-any.pkg.tar.xz ) main() { local src pkg local pkgs=() for src in *.PKGBUILD; do pkg="$(pkgfilename "$src")" while ! { test "$src" -ot "$pkg" && test config.sh -ot "$pkg"; } 2>/dev/null; do printf '%s: Building %q\n' "$0" "$src" makepkg -d -p "$src" || exit $? pkg="$(pkgfilename "$src")" done pkgs+=("$pkg") done for pkg in "${pkgs[@]}"; do if test "$pkg" -nt config.db.tar.gz; then rm -f config.{db,files}{,.tar.gz} repo-add config.db.tar.gz "${pkgs[@]}" return fi done } main "$@"