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

EAPI=8

PYTHON_COMPAT=( python3_{10..11} )

inherit desktop python-single-r1 wrapper xdg

MY_PN="PlayOnLinux"

DESCRIPTION="Set of scripts to easily install and use Windows games and software"
HOMEPAGE="https://playonlinux.com/
		https://github.com/PlayOnLinux/POL-POM-4"
SRC_URI="https://www.playonlinux.com/script_files/${MY_PN}/${PV}/${MY_PN}_${PV}.tar.gz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="winbind"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

RDEPEND="${PYTHON_DEPS}
	app-arch/p7zip
	app-arch/unzip
	app-crypt/gnupg
	app-misc/jq
	$(python_gen_cond_dep '
		dev-python/natsort[${PYTHON_USEDEP}]
		dev-python/wxpython:4.0[${PYTHON_USEDEP}]
	')
	media-gfx/icoutils
	|| ( net-analyzer/netcat net-analyzer/openbsd-netcat )
	net-misc/wget
	virtual/imagemagick-tools
	virtual/wine
	winbind? ( net-fs/samba[winbind] )
	x11-apps/mesa-progs
	x11-terms/xterm
"

DEPEND="${RDEPEND}
	app-arch/cabextract
"

S="${WORKDIR}/${PN}"

# TODO:
# Having a real install script
# It will let using LANGUAGES easily
# How to deal with Microsoft Fonts installation asked every time ?
# How to deal with wine version installed ? (have a better mgmt of system one)
# Look at debian pkg: https://packages.debian.org/sid/playonlinux

PATCHES=(
	"${FILESDIR}/${PN}-4.2.4-pol-bash.patch"
	"${FILESDIR}/${PN}-4.2.4-binary-plugin.patch"
	"${FILESDIR}/${PN}-4.2.6-stop-update-warning.patch"
	"${FILESDIR}/${PN}-4.4-bash-find-python.patch"
	"${FILESDIR}/${PN}-4.4-version-fix.patch"
	"${FILESDIR}/${PN}-4.4-remove-setspacing.patch"
)

src_prepare() {
	default

	python_fix_shebang .

	# remove playonmac
	rm etc/{playonmac.icns,terminal.applescript} || die

	# remove desktop integration
	rm etc/{PlayOnLinux.desktop,PlayOnLinux.directory,playonlinux-Programs.menu} || die

	sed -i -e 's/python2/python3/' Makefile
}

src_install() {
	# all things without exec permissions
	insinto "/usr/share/${PN}"
	doins -r resources lang lib etc plugins

	# bash/ install
	exeinto "/usr/share/${PN}/bash"
	find "${S}/bash" -type f -exec doexe '{}' +
	exeinto "/usr/share/${PN}/bash/expert"
	find "${S}/bash/expert" -type f -exec doexe '{}' +

	# python/ install
	python_moduleinto "/usr/share/${PN}"
	python_domodule python

	# main executable files
	exeinto "/usr/share/${PN}"
	doexe ${PN}{,-pkg,-bash,-shell,-url_handler}

	# icons
	doicon -s 128 etc/${PN}.png
	for size in 16 22 32; do
		newicon -s $size etc/${PN}$size.png ${PN}.png
	done

	doman "${FILESDIR}"/playonlinux{,-pkg}.1
	dodoc CHANGELOG.md

	make_wrapper ${PN} "./${PN}" "/usr/share/${PN}"
	make_wrapper ${PN}-pkg "./${PN}-pkg" "/usr/share/${PN}"
	make_desktop_entry ${PN} ${MY_PN} ${PN} Game
}

pkg_prerm() {
	if [[ -z ${REPLACING_VERSIONS} ]]; then
		elog "Installed software and games with playonlinux have not been removed."
		elog "To remove them, you can re-install playonlinux and remove them using it,"
		elog "or do it manually by removing .PlayOnLinux/ in your home directory."
	fi
}