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

EAPI=8

PYTHON_COMPAT=( python3_{13..15} )

WX_GTK_VER="3.2-gtk3"

inherit cmake optfeature python-single-r1 wxwidgets xdg

DESCRIPTION="Linux port of FAR Manager v2"
HOMEPAGE="https://github.com/elfmz/far2l"

if [[ "${PV}" == "9999" ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/elfmz/far2l"
	EGIT_BRANCH="master"
else
	MY_PV="v_${PV/_beta/}"
	MY_P="${PN}-${MY_PV}"
	S="${WORKDIR}/${MY_P}"
	SRC_URI="https://github.com/elfmz/far2l/archive/${MY_PV}.tar.gz"
	KEYWORDS="~amd64"
fi

LICENSE="GPL-2"
SLOT="0"
IUSE="+archive aws +chardet +colorer mtp nfs python rar samba sdl sftp +ssl webdav wxwidgets X"
REQUIRED_USE="
	python? ( ${PYTHON_REQUIRED_USE} )
"
RESTRICT="mirror"

# media-libs/libmtp provides udev rules and plugdev access for MTP devices.
# far2l itself uses the bundled libmtp/libusb.
RDEPEND="
	archive? ( app-arch/libarchive )
	aws? (
		dev-libs/openssl:0=
		net-libs/neon[ssl]
	)
	chardet? ( app-i18n/uchardet )
	colorer? ( dev-libs/libxml2 )
	mtp? ( media-libs/libmtp )
	nfs? ( net-fs/libnfs )
	python? (
		${PYTHON_DEPS}
		$(python_gen_cond_dep '
			dev-python/cffi[${PYTHON_USEDEP}]
		')
	)
	rar? ( app-arch/unrar )
	samba? ( net-fs/samba[client] )
	sdl? (
		media-libs/libsdl2
		media-libs/freetype:2
		media-libs/harfbuzz
		media-libs/fontconfig
	)
	sftp? ( net-libs/libssh[sftp] )
	ssl? ( dev-libs/openssl:0= )
	webdav? ( net-libs/neon )
	wxwidgets? ( x11-libs/wxGTK:${WX_GTK_VER} )
	X? (
		x11-libs/libX11
		x11-libs/libXi
	)"

DEPEND="${RDEPEND}"

BDEPEND="
	virtual/pkgconfig
	python? ( ${PYTHON_DEPS} )"

DOCS=( README.md )

pkg_setup() {
	if use wxwidgets; then
		setup-wxwidgets
	fi
	if use python; then
		python-single-r1_pkg_setup
	fi
}

src_prepare() {
	sed -e 's|\${CMAKE_INSTALL_PREFIX}/lib/far2l/Plugins/|\\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/far2l/Plugins/|g' \
		-i CMakeLists.txt || die
	sed -e 's:cmake_minimum_required (VERSION 3\.5\.0):cmake_minimum_required (VERSION 3.10.0):' \
		-i CMakeLists.txt || die
	cmake_src_prepare
}

src_configure() {
	local mycmakeargs=(
		-DMULTIARC="$(usex archive)"
		-DNR_AWS="$(usex aws)"
		-DUSEUCD="$(usex chardet)"
		-DCOLORER="$(usex colorer)"
		-DMTP="$(usex mtp)"
		-DMTP_SYSTEM_LIBUSB=OFF
		-DMTP_SYSTEM_LIBMTP=OFF
		-DNR_NFS="$(usex nfs)"
		-DPYTHON="$(usex python)"
		-DUNRAR="$(usex rar lib NO)"
		-DNR_SMB="$(usex samba)"
		-DUSESDL="$(usex sdl)"
		-DNR_SFTP="$(usex sftp)"
		-DNR_OPENSSL="$(usex ssl)"
		-DNR_WEBDAV="$(usex webdav)"
		-DUSEWX="$(usex wxwidgets)"
		-DTTYX="$(usex X)"
		-DTTYXI="$(usex X)"

		-DMUSL="$(usex elibc_musl)"
		-DBUILD_SHARED_LIBS=OFF
	)
	cmake_src_configure
}

pkg_postinst() {
	xdg_desktop_database_update
	xdg_icon_cache_update
	optfeature "accessing Android devices through the ADB plugin" dev-util/android-tools
	optfeature "privileged file operations through far2l's sudo support" app-admin/sudo
}

pkg_postrm() {
	xdg_desktop_database_update
	xdg_icon_cache_update
}