# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit go-module

WHITELIST_VERSIONS=(
	"<> 1.2.8 1.2.36"
)

whitelist_versions() {
	local version_spec version1 version2
	local -a deps

	SPOTIFY_VERSIONS=

	# Iterate in reverse for elog
	for ((index = $(( ${#WHITELIST_VERSIONS[@]} - 1 )); index >= 0; index--)); do
		read -r version_spec version1 version2 <<< "${WHITELIST_VERSIONS[${index}]}"

		case ${version_spec} in
			"<>")
				deps[$index]="( <=media-sound/spotify-${version2} >=media-sound/spotify-${version1} )"
				SPOTIFY_VERSIONS+="${version1} -> ${version2}"
				;;
			"~")
				deps[$index]="~media-sound/spotify-${version1}"
				SPOTIFY_VERSIONS+="${version1}"
				;;
			*)
				die "Invalid version specifier in WHITELIST_VERSIONS"
				;;
		esac

		if [[ ${index} == 0 ]]; then
			SPOTIFY_VERSIONS+=". "
		elif [[ ${index} == 1 ]]; then
			SPOTIFY_VERSIONS+=" and "
		else
			SPOTIFY_VERSIONS+=", "
		fi
	done

	RDEPEND=" || ( ${deps[@]} )"
}
whitelist_versions

DESCRIPTION="Commandline tool to customize Spotify client."
HOMEPAGE="https://spicetify.app/"
SRC_URI="
	https://github.com/spicetify/spicetify-cli/archive/v${PV}.tar.gz -> ${P}.tar.gz
	https://gitlab.com/api/v4/projects/37881342/packages/generic/${PN}/${PV}/${P}-deps.tar.xz
"

LICENSE="Apache-2.0 BSD LGPL-2.1 MIT"
SLOT="0"
KEYWORDS="~amd64"

# no tests
RESTRICT="test"

INSTALLDIR="/opt/${PN}"

src_compile() {
	ego build -ldflags "-X main.version=${PV}"
}

src_install() {
	insinto "${INSTALLDIR}"
	doins -r {CustomApps,Extensions,Themes,jsHelper,spicetify-cli}
	dobin "${FILESDIR}/spicetify"
	fperms +x "${INSTALLDIR}/spicetify-cli"
}

pkg_postinst() {
	elog "Spicetify requires a Spotify install that it can modify."
	elog "To give read and write permissions to everyone on the system to run the following commands as root."
	elog "# chmod a+wr /opt/spotify/spotify-client"
	elog "# chmod a+wr /opt/spotify/spotify-client/Apps -R"
	elog ""
	elog "WARNING: Do not run spicetify as root please"
	elog ""
	elog "Spicetify compatibility is limited to the following Spotify versions:"
	elog " ${SPOTIFY_VERSIONS}"
	elog ""
	elog "Otherwise you can install spotify to a user modifiable location like as a flatpak:"
	elog " https://spicetify.app/docs/advanced-usage/installation#spotify-installed-from-flatpak"
	elog ""
	elog "To install themes see:"
	elog " https://spicetify.app/docs/advanced-usage/themes"

	if $(has_version -r ">=media-sound/spotify-1.2.25"); then
		elog ""
		elog "The New Releases custom app no longer works with Spotify 1.2.25 and higher. As an alternative,"
		elog "please use What's New which was created by Spotify and can be enabled via Experimental Features"
		elog "if it isn't already enabled."
	fi
}