forked from Spark/builder
		
	
		
			
	
	
		
			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 |