builder/pkgbuilder

58 lines
1.1 KiB
Plaintext
Raw Permalink Normal View History

#!/usr/bin/env bash
err() { printf '%s\n' "$*" >&2; }
build_remote() { makepkg-ci "$@"; }
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
declare -A pkg_dests
source "$HOME/.config/pkgbuilder/config"
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_dest" "$pkg_repo"
else
git -C "$repo_local" remote update
if git -C "$repo_local" status --porcelain -bu | grep -q behind; then
build_remote "$pkg_dest" "$pkg_repo"
git -C "$repo_local" pull
fi
fi
shift 2
done