#!/bin/sh -euf

if [ $# != 2 ]; then
	echo "Usage: ${0*/} <url> <dest_dir>" >&2
	exit 1
fi

AMM_SSH_KEY=/var/lib/alterator-mass-management/keys/id_rsa
LOG_DIR=/var/log/alterator-mass-management/

TMP_LOG="$(mktemp --tmpdir amm-ansible-pullXXXXXXXX.log)"
ANSIBLE_CONFIG=/var/lib/alterator-mass-management/ansible.cfg ansible-pull -v -o --key-file="$AMM_SSH_KEY" -U "$1" -d "$2" >"$TMP_LOG"
GROUP="${1##*/}"
if grep -qs "^PLAY[[:blank:]]\+\[$GROUP\]" "$TMP_LOG"; then
	cd "$2"
	TASK="$(sed -r -n 's|^[[:blank:]]+task:[[:blank:]]+([[:digit:]]+)$|\1|p' local.yml | head -1)"
	TRY="$(sed -r -n 's|^[[:blank:]]+try:[[:blank:]]+([[:digit:]]+)$|\1|p' local.yml | head -1)"
	[ -n "$TASK" -a -n "$TRY" ] || exit 1

	TASK_LOG="$LOG_DIR/$(hostname)-task-$TASK.$TRY.raw.log"
	mv "$TMP_LOG" "$TASK_LOG"
	if ! rsync -t -e "ssh -i $AMM_SSH_KEY" "$TASK_LOG" "$1/" >/dev/null 2>&1; then
		mkdir -p "$LOG_DIR/for-sync"
		ln "$TASK_LOG" "$LOG_DIR/for-sync"
	fi
else
	rm -- "$TMP_LOG"
fi

if [ -d "$LOG_DIR/for-sync" ]; then
	for RSYNC_FILE in $(find "$LOG_DIR/for-sync" -type f -name '*.raw.log'); do
		if rsync -t -e "ssh -i $AMM_SSH_KEY" "$RSYNC_FILE" "$1/" >/dev/null 2>&1; then
			rm -- "$RSYNC_FILE"
		fi
	done
fi
