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

EAPI=8

PYTHON_COMPAT=( python3_{10..12} )
inherit cmake desktop optfeature python-single-r1

DESCRIPTION="Shane's Chess Information Database"
HOMEPAGE="https://scid.sourceforge.net/"
SRC_URI="
	https://downloads.sourceforge.net/scid/${PN}-code-${PV}.zip
	https://downloads.sourceforge.net/scid/${P}_x64_linux.tar.gz"
S="${WORKDIR}/${PN}"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="photos scripts test"
REQUIRED_USE="scripts? ( ${PYTHON_REQUIRED_USE} )"
RESTRICT="!test? ( test )"

COMMON_DEPEND="
	dev-lang/tcl:=
	dev-lang/tk"
RDEPEND="
	${COMMON_DEPEND}
	dev-tcltk/tkimg
	scripts? ( ${PYTHON_DEPS} )"
DEPEND="
	${COMMON_DEPEND}
	test? ( dev-cpp/gtest )"
BDEPEND="
	app-arch/unzip
	scripts? ( ${PYTHON_DEPS} )"

PATCHES=(
	"${FILESDIR}"/${PN}-4.6.2-pgnfix-python3.patch
	"${FILESDIR}"/${P}-system-gtest.patch
	"${FILESDIR}"/${P}-tcl-start-path.patch
)

HTML_DOCS=( help/. )

pkg_setup() {
	use scripts && python-single-r1_pkg_setup
}

src_prepare() {
	cmake_src_prepare

	if use scripts; then
		python_fix_shebang scripts/pgnfix.py

		# cmake build doesn't use "tkscid" anymore but scripts still do
		sed -i s/tkscid/scid/ scripts/*.tcl || die
	fi
}

src_configure() {
	local mycmakeargs=(
		-DBUILD_SHARED_LIBS=off
		-DCMAKE_INSTALL_PREFIX="${EPREFIX}"/usr/share
		-DGTEST=$(usex test)
	)

	cmake_src_configure
}

src_test() {
	"${BUILD_DIR}"/gtest/scid_tests || die
}

src_install() {
	cmake_src_install

	dobin "${BUILD_DIR}"/{phalanx-scid,scid,scidlet}

	if use scripts; then
		local script
		# install same set of scripts as pre-cmake
		for script in pgnfix.py {sc_{epgn,spell,eco,import},scidpgn,spliteco,spf2spi}.tcl sc_remote.tk; do
			newbin scripts/${script} ${script%.*}
		done
	fi

	insinto /usr/share/scid
	doins scid{,_es,_fr}.eco "${WORKDIR}"/${P}/spelling.ssp
	use photos && doins -r "${WORKDIR}"/${P}/photos

	newicon resources/svg/scid_app.svg scid.svg
	make_desktop_entry scid Scid

	# delete re-located files
	rm -r "${ED}"/usr/share/{bin,scid/{scid,scripts}} || die
}

pkg_postinst() {
	optfeature "speech support" dev-tcltk/snack

	if [[ ${REPLACING_VERSIONS} ]] && ver_test ${REPLACING_VERSIONS} -lt 4.7; then
		elog
		elog "Warning: this version uses ~/.scid4.7 and is incompatible with older ~/.scid"
		elog
	fi
}