# shellcheck shell=bash
termux_pkg_auto_update() {
	if [[ -n "${__CACHED_TAG:-}" ]]; then
		termux_pkg_upgrade_version "${__CACHED_TAG}"
		return $?
	fi

	# Example:
	# https://github.com/vim/vim/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz
	#            _="https:"
	#            _=""
	# project_host="github.com"
	#            _="vim/vim/archive/refs/tags/v${TERMUX_PKG_VERSION}.tar.gz"
	local project_host
	IFS='/' read -r _ _ project_host _ <<< "${TERMUX_PKG_SRCURL}"

	if [[ -z "${TERMUX_PKG_UPDATE_METHOD}" ]]; then
		if [[ "${project_host}" == "github.com" ]]; then
			TERMUX_PKG_UPDATE_METHOD="github"
		elif [[ "$TERMUX_PKG_SRCURL" == *"/-/archive/"* ]]; then
			TERMUX_PKG_UPDATE_METHOD="gitlab"
		else
			TERMUX_PKG_UPDATE_METHOD="repology"
		fi
	fi

	case "${TERMUX_PKG_UPDATE_METHOD}" in
		github)
			if [[ "${project_host}" != "${TERMUX_PKG_UPDATE_METHOD}.com" ]]; then
				termux_error_exit <<-EndOfError
					source url's hostname is not ${TERMUX_PKG_UPDATE_METHOD}.com, but has been
					configured to use ${TERMUX_PKG_UPDATE_METHOD}'s method.
				EndOfError
			fi
			termux_github_auto_update
		;;
		gitlab)
			termux_gitlab_auto_update
		;;
		repology)
			termux_repology_auto_update
		;;
		*)
			termux_error_exit <<-EndOfError
				wrong value '${TERMUX_PKG_UPDATE_METHOD}' for TERMUX_PKG_UPDATE_METHOD.
				Can be 'github', 'gitlab' or 'repology'
			EndOfError
		;;
	esac
}
