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

EAPI=8
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{10..13} )

UVER=
UREV=

inherit distutils-r1 ubuntu-versionator

DESCRIPTION="Online scopes for the Unity Dash"
HOMEPAGE="https://launchpad.net/onehundredscopes"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="amd64"
RESTRICT="test"

RDEPEND="
	dev-libs/dee:0=
	dev-libs/gobject-introspection
	dev-libs/libunity:0=

	$(python_gen_cond_dep '
		dev-python/pygobject:3[${PYTHON_USEDEP}]
	')
"
BDEPEND="virtual/pkgconfig"

## Neat and efficient way of bundling and tracking all available scopes into one ebuild ##
## Borrowed from chenxiaolong's Unity-for-Arch overlay at https://github.com/chenxiaolong/Unity-for-Arch ##
setvar() {
	eval "_ver_${1//-/_}=${2}"
	eval "_rel_${1//-/_}=${3}"
	eval "_use_${1//-/_}=${4}"
	eval "_dep_${1//-/_}=\"${5}\""
	packages+=( ${1} )
}
setvar audacious		0.1+13.10.20130927.1	0ubuntu1 + "$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')"	## works with audacious 3.9
setvar calculator		0.1+14.04.20140328	0ubuntu5 + ""									## works with gnome-calculator 3.32
setvar chromiumbookmarks	0.1+13.10.20130723	0ubuntu1 + ""									## works with chromium 79 (fixed by patch)
setvar clementine		0.1+13.10.20130723	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')"	## not tested
setvar colourlovers		0.1+13.10.20130723	0ubuntu1 + ""									## works
setvar devhelp			0.1+14.04.20140328	0ubuntu4 + "$(python_gen_cond_dep 'dev-python/lxml[${PYTHON_USEDEP}]')"		## works
setvar deviantart		0.1+13.10.20130723	0ubuntu1 + "$(python_gen_cond_dep 'dev-python/feedparser[${PYTHON_USEDEP}]')"	## works (fixed by patch)
setvar firefoxbookmarks		0.1+13.10.20130809.1	0ubuntu1 + ""									## works with firefox 72 (fixed by patch)
setvar gallica			0.1+13.10.20130816.2	0ubuntu1 + "$(python_gen_cond_dep 'dev-python/lxml[${PYTHON_USEDEP}]')"		## works (fixed by patch)
#setvar gdrive			0.9+13.10.20130723	0ubuntu1 - ""									## doesn't work (account-plugins package not available)
setvar github			0.1+13.10.20130723	0ubuntu1 + ""									## works
setvar gmusicbrowser		0.1+13.10.20130723	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')"	## not tested
setvar gnote			0.1+13.10.20130723	0ubuntu3 - ""									## not tested
#setvar googlenews		0.1+13.10.20130723	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/feedparser[${PYTHON_USEDEP}]')"	## doesn't work
#setvar gourmet			0.1+13.10.20130723	0ubuntu1 - ""									## doesn't work (gourmet package not available)
setvar guayadeque		0.1+13.10.20130927.1	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')"	## not tested
#setvar launchpad		0.1daily13.06.05	0ubuntu1 - ""									## doesn't work (python-launchpadlib package not available)
setvar manpages			3.0+14.04.20140324	0ubuntu4 + "sys-apps/man-db x11-libs/gtk+:3"					## works
setvar musique			0.1+13.10.20130723	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')"	## not tested
#setvar openclipart		0.1+13.10.20130723	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/feedparser[${PYTHON_USEDEP}]')"	## doesn't work (https://en.wikipedia.org/wiki/Openclipart#Lockdown_and_attempts_at_mirroring_the_library)
#setvar openweathermap		0.1+13.10.20130828	0ubuntu1 - ""									## doesn't work (needs API key)
setvar soundcloud		0.1+13.10.20130723	0ubuntu3 + ""									## works
setvar sshsearch		0.1daily13.06.05	0ubuntu1 - "$(python_gen_cond_dep 'dev-python/paramiko[${PYTHON_USEDEP}]')"	## not tested
setvar texdoc			0.1+14.04.20140328	0ubuntu1 + ""									## works
#setvar tomboy			0.1+13.10.20130723	0ubuntu1 - ""									## doesn't work (tomboy package not available)
setvar virtualbox		0.1+13.10.20130723	0ubuntu3 + ""									## works
#setvar yahoostock		0.1+13.10.20130723	0ubuntu1 - ""									## doesn't work
setvar yelp			0.1+13.10.20130723	0ubuntu1 + ""									## works
setvar zotero			0.1+13.10.20130723	0ubuntu3 - ""									## not tested (Zotero 4.0 for Firefox is being replaced by a Zotero Connector for Firefox)

UURL="${UURL%/*}"; SRC_URI=""
for i in ${packages[@]}; do
	unset _rel
	eval "_name=${i}; _ver=\${_ver_${i//-/_}}; _rel=\${_rel_${i//-/_}}; _use=\${_use_${i//-/_}}; _dep=\${_dep_${i//-/_}}"
	[[ -n ${_dep} ]] && RDEPEND+=" ${_name}? ( ${_dep} )"
	IUSE+="${_use/-}${_name} "
	SRC_URI+="${_name}? (
		${UURL}/unity-scope-${_name}_${_ver}.orig.tar.gz
		${UURL}/unity-scope-${_name}_${_ver}-${_rel}.diff.gz ) "
done

DEPEND="${RDEPEND}
	$(python_gen_cond_dep '
		dev-python/python-distutils-extra[${PYTHON_USEDEP}]
	')
"
## gnome-base/gvfs[http]: show thumbnails when searching online in the Dash ##
PDEPEND="
	audacious? ( unity-lenses/unity-lens-meta[music] )
	colourlovers? ( gnome-base/gvfs[http] )
	deviantart? ( gnome-base/gvfs[http] )
	gallica? ( gnome-base/gvfs[http] )
	soundcloud? ( unity-lenses/unity-lens-meta[music] )
"

S="${WORKDIR}"

src_prepare() {
	ubuntu-versionator_src_prepare

	for i in ${packages[@]}; do
		use ${i} || continue
		eval "_name=${i}; _ver=\${_ver_${i//-/_}}; _rel=\${_rel_${i//-/_}}"
		pushd "${S}/unity-scope-${_name}-${_ver}" >/dev/null || die
			echo "$(tput bold)>>> Processing Ubuntu diff file$(tput sgr0) ..."
			eapply "${S}/unity-scope-${_name}_${_ver}-${_rel}.diff"
			echo "$(tput bold)>>> Done.$(tput sgr0)"
			[[ -f ${FILESDIR}/${i}.patch ]] && eapply "${FILESDIR}/${i}.patch"
			distutils-r1_src_prepare
			grep -Fqsx "RemoteContent=true" "data/${i}.scope.in" && RSCOPES+=( ${i} )
		popd >/dev/null || die
	done
}

src_compile() {
	for i in ${packages[@]}; do
		use ${i} || continue
		eval "_name=${i}; _ver=\${_ver_${i//-/_}}; _rel=\${_rel_${i//-/_}}"
		pushd "${S}/unity-scope-${_name}-${_ver}" >/dev/null || die
			BUILD_DIR="${PWD#${WORKDIR}/}_${BUILD_DIR}" distutils-r1_src_compile
		popd >/dev/null || die
	done
}

src_install() {
	for i in ${packages[@]}; do
		use ${i} || continue
		eval "_name=${i}; _ver=\${_ver_${i//-/_}}; _rel=\${_rel_${i//-/_}}"
		pushd "${S}/unity-scope-${_name}-${_ver}" >/dev/null || die
			BUILD_DIR="${PWD#${WORKDIR}/}_${BUILD_DIR}" distutils-r1_src_install
		popd >/dev/null || die
	done
}

pkg_postinst() {
	ubuntu-versionator_pkg_postinst

	local ylp dvh rs

	has_version "gnome-extra/yelp" || ylp="to install gnome-extra/yelp package and "
	has_version "dev-util/devhelp" || dvh="to install dev-util/devhelp package and "

	echo
	use audacious && ! has_version "media-sound/audacious" && elog "audacious scope needs to install media-sound/audacious package." && echo
	use calculator && ! has_version "gnome-extra/gnome-calculator" && elog "calculator scope needs to install gnome-extra/gnome-calculator." && echo
	use chromiumbookmarks && ! has_version "www-client/chromium" && elog "chromiumbookmarks scope needs to install www-client/chromium package." && echo
	use devhelp && [[ -n ${dvh} ]] && elog "devhelp scope needs ${dvh/ and /.}" && echo
	use firefoxbookmarks && ! has_version "www-client/firefox" && elog "firefoxbookmarks scope needs to install www-client/firefox package." && echo
	use manpages && elog "manpages scope needs ${ylp}to run mandb to create or update the manual page index caches." && echo
	use texdoc && ([[ -n ${dvh} ]] || ! has_version "app-text/texlive-core[doc]") && elog "texdoc scope needs ${dvh}to install app-text/texlive-core[doc] package." && echo
	use virtualbox && ! has_version "app-emulation/virtualbox" && elog "virtualbox scope needs to install app-emulation/virtualbox package." && echo
	use yelp && [[ -n ${ylp} ]] && elog "yelp scope needs ${ylp/ and /.}" && echo

	if [[ -n ${RSCOPES} ]]; then
		elog "Remote scopes need 'Include online search results' option to be turned on."
		elog "The option is located in System Settings > Security & Privacy > Search tab."
		echo
		elog "Installed remote scopes:"
		for rs in "${RSCOPES[@]}"; do
			elog "${rs}"
		done
		echo
	fi
}