# completion
(
	set -euo pipefail

	CHEZMOI_PATH="$(command -v chezmoi 2> /dev/null)"

	COMPLETION_FILE="${ZSH_COMPLETIONS_DIR}/_chezmoi"
	if [ -r "$COMPLETION_FILE" ]; then
		COMPLETION_FILE_CTIME="$(stat -c %Z "$COMPLETION_FILE")"
		CHEZMOI_FILE_CTIME="$(stat -c %Z "${CHEZMOI_PATH}")"

		if [ "$COMPLETION_FILE_CTIME" -ge "$CHEZMOI_FILE_CTIME" ]; then
			exit 0
		fi
	fi

	chezmoi completion zsh > "$COMPLETION_FILE"
	chmod +x "$COMPLETION_FILE"
)

# auto update
(
	set -euo pipefail

	# has the chezmoi repo been pulled in the last 24 hours?
	if [ "$(date +%s -r "$(chezmoi git rev-parse -- --show-toplevel)/.git/FETCH_HEAD")" -gt $((EPOCHSECONDS-86400)) ]; then
		exit 0
	fi

	chezmoi git pull -- --rebase
	chezmoi diff

	while true; do
		read -r 'APPLY?apply? [y/N] '

		case "${APPLY:-}" in
			'y'|'Y'|'YES'|'yes'|'Yes')
				echo 'applying changes'
				chezmoi apply
				exit 0
				;;

			'n'|'N'|'NO'|'no'|'No'|'')
				echo 'not applying changes'
				exit 0
				;;
		esac
	done
)