#!/bin/sh SRC_BASE="$HOME/.local/src" XDG_REPO_BASE="$SRC_BASE/xdg-repo" XDG_REPO_ARCH="x86_64" get_pkgver() { grep "^\s*pkgver" .SRCINFO | sed "s/^\s*pkgver\s*=\s*//;" } get_pkgrel() { grep "^\s*pkgrel" .SRCINFO | sed "s/^\s*pkgrel\s*=\s*//;" } get_epoch() { raw_epoch="$(grep "^\s*epoch" .SRCINFO | sed "s/^\s*epoch\s*=\s*//;")" if [ -n "$raw_epoch" ]; then echo "$raw_epoch:" fi } get_full_pkgver() { echo "$(get_epoch)$(get_pkgver)-$(get_pkgrel)" } handle_bin_ver_pkg_upgrade() { if [ -e PKGBUILD ]; then binary_version="$(grep "^# binary version of this package (-bin):" PKGBUILD | head -n 1 | awk '{print $8}' | sed 's/^.*\///')" if [ -n "$binary_version" ]; then pkgver="$(get_pkgver)" pkgrel="$(get_pkgrel)" epoch="$(get_epoch)" cd "$SRC_BASE/$binary_version" || return git pull || return if [ -n "$epoch" ]; then sed -i "s/^\s*epoch\s*=.*$/epoch=$epoch/" PKGBUILD fi sed -i "s/^\s*pkgver\s*=.*$/pkgver=$pkgver/" PKGBUILD sed -i "s/^\s*pkgrel\s*=.*$/pkgrel=$pkgrel/" PKGBUILD updpkgsums || return makepkg --printsrcinfo > .SRCINFO git add .SRCINFO PKGBUILD || return # note: (hopefully up-to-date) copy of 'uppkg' zsh alias git commit -m "uppkg -> $(raw_pkgver="$(grep "^\s*epoch\|^\s*pkgver\|^\s*pkgrel" .SRCINFO | sed "/^\s*epoch/ {s/:$/::/;t;s/$/:/}; s/^\s*epoch\s*=\s*//; s/^\s*pkgver\s*=\s*//; s/^\s*pkgrel\s*=\s*/-/")"; if echo "$raw_pkgver" | grep -q ":"; then raw_pkgver="$(echo "$raw_pkgver" | sed "1{N;h;d};3G")"; fi; echo "$raw_pkgver" | tr -d "\n")" || return git push fi fi } xdg_repo_path="$XDG_REPO_BASE/$XDG_REPO_ARCH" more_than_one_arguemt_given=0 commit_msg="updated" for file in "$@"; do pkgver="$(get_full_pkgver)" pkgname="${file%%-"$pkgver"*}" for old_pkg in "$xdg_repo_path/$pkgname"*.pkg.tar.zst; do if [ -e "$old_pkg" ]; then rm "$xdg_repo_path/$pkgname"*.pkg.tar.zst* # TODO: broken, use another way to break out of inner loop # break fi done if [ "$more_than_one_arguemt_given" = 0 ]; then more_than_one_arguemt_given=1 commit_msg="$commit_msg $pkgname -> $pkgver" else commit_msg="$commit_msg + $pkgname -> $pkgver" fi mv "$file" "$xdg_repo_path" done handle_bin_ver_pkg_upgrade cd "$XDG_REPO_BASE" || exit 1 git pull ./signpkgs git add . git commit -m "$commit_msg" git push