107 lines
3.6 KiB
Plaintext
107 lines
3.6 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
err() { printf '%s\n' "$*" >&2; }
|
||
|
|
||
|
build_remote() { sudo makepkg-overlay "$@"; }
|
||
|
cleanup() { rm -f "$lockfile"; }
|
||
|
|
||
|
lock() {
|
||
|
[[ -f "$lockfile" ]] && {
|
||
|
printf 'Lockfile found: %s\n' "$lockfile" >&2
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
echo $$ > "$lockfile"
|
||
|
lock_pid=$(<"$lockfile")
|
||
|
[[ $$ == "$lock_pid" ]] || return 1
|
||
|
}
|
||
|
|
||
|
# Ensure one instance
|
||
|
lockfile="$HOME/.cache/pkgbuilder/.lock"
|
||
|
lock || exit 1
|
||
|
trap cleanup EXIT
|
||
|
|
||
|
spark_repos="$HOME/public"
|
||
|
|
||
|
declare -A pkg_dests
|
||
|
pkg_dests=(
|
||
|
[spark]="$spark_repos/spark/import"
|
||
|
[spark-extra]="$spark_repos/spark-extra/import"
|
||
|
[spark-testing]="$spark_repos/spark-testing/import"
|
||
|
[spark-updates]="$spark_repos/spark-updates/spark/import"
|
||
|
)
|
||
|
|
||
|
repos=(
|
||
|
spark "https://code.fleshless.org/pkgbuilds/sinit-spark"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/sinit-sysvcompat"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/smdev"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/spark-etc"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/spark-rc"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/ssm"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/ssm-services-git"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/systemd-dummy"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/ubase-extras"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/udev-dummy"
|
||
|
spark "https://code.fleshless.org/pkgbuilds/xorg-noudev-conf"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/anope-services"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/chef-client"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/dmenu-q-xywh-xft-git"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/dxvk-bin"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/eudev"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/fake"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/graphicsmagick-webp"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/ircd-ratbox"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/lemonbar"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/libsystemd-standalone"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/loksh"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/mlmmj"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/nginx-mod-rtmp"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/posh"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/prm"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/qstat"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/scron"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/sx-utils"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/systemd-libs-systemd"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/ufw-tools"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/xkb-layout-ducky-mini"
|
||
|
spark-extra "https://code.fleshless.org/pkgbuilds/xsct-git"
|
||
|
spark-testing "https://code.fleshless.org/pkgbuilds/compton-git"
|
||
|
spark-testing "https://code.fleshless.org/pkgbuilds/fskit-git"
|
||
|
spark-testing "https://code.fleshless.org/pkgbuilds/ssm-git"
|
||
|
spark-testing "https://code.fleshless.org/pkgbuilds/xtitle-git"
|
||
|
)
|
||
|
|
||
|
|
||
|
|
||
|
wrkdir="$HOME/.cache/pkgbuilder/repositories"
|
||
|
mkdir -p "$wrkdir"
|
||
|
|
||
|
set -- "${repos[@]}"
|
||
|
while (($#>1)); do
|
||
|
pkg_repo=$2
|
||
|
pkg_dest="${pkg_dests[$1]}"
|
||
|
|
||
|
repo_name="${pkg_repo##*/}"
|
||
|
repo_path="${pkg_repo##*://}"
|
||
|
repo_local="$wrkdir/${repo_path%.git}"
|
||
|
|
||
|
err "repo: $repo_local"
|
||
|
err " - url: $pkg_repo"
|
||
|
|
||
|
# Check if the repo already exists
|
||
|
if ! [[ -d "$repo_local" ]]; then
|
||
|
mkdir -p "$wrkdir/${repo_path%$repo_name}"
|
||
|
git clone "$pkg_repo" "$repo_local"
|
||
|
|
||
|
build_remote "$pkg_repo" "$pkg_dest"
|
||
|
else
|
||
|
git -C "$repo_local" remote update
|
||
|
if git -C "$repo_local" status --porcelain -bu | grep -q behind; then
|
||
|
build_remote "$pkg_repo" "$pkg_dest"
|
||
|
git -C "$repo_local" pull
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
shift 2
|
||
|
done
|