#!/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