#!/bin/sh -efu

. gb-sh-functions

fail_if_task_abort_requested

repo="${GB_REPO_DIR##*/}"

enable -f /usr/lib/bash/lockf lockf
# Obtain a shared lock on the $GB_REPO_DIR.
if ! builtin lockf -sn "$GB_REPO_DIR"; then
	stamp_echo "waiting for a shared lock on $repo"
	builtin lockf -sv "$GB_REPO_DIR"
	stamp_echo "acquired a shared lock on $repo"
fi

. gb-sh-tmpdir

for host in $GB_REPO_CLONES; do
	gb-x-ssh "$host" clone-repo "$USER" "$repo" ||
		stamp_echo "FAILED to remote clone $repo on $host" >> "$tmpdir"/FAIL &
done

$0-local ||
	stamp_echo "FAILED to clone $repo" >> "$tmpdir"/FAIL

wait

if [ -s "$tmpdir"/FAIL ]; then
	cat >&2 "$tmpdir"/FAIL
	exit 1
fi

stamp_echo >&2 "cloned $repo"
