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

EAPI=8

inherit gnome.org gnome2-utils meson optfeature xdg

DESCRIPTION="Archive manager for GNOME"
HOMEPAGE="https://gitlab.gnome.org/GNOME/file-roller"

LICENSE="GPL-2+ CC-BY-SA-3.0"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
IUSE="gtk-doc +introspection nautilus"
REQUIRED_USE="gtk-doc? ( introspection )"

# gdk-pixbuf used extensively in the source
# cairo used in eggtreemultidnd.c
# pango used in fr-window
RDEPEND="
	>=dev-libs/glib-2.38:2
	>=gui-libs/gtk-4.12.0:4[introspection?]
	>=gui-libs/libadwaita-1.2:1
	nautilus? ( >=gnome-base/nautilus-43.0 )
	>=dev-libs/json-glib-0.14
	>=app-arch/libarchive-3.2:=
	introspection? ( >=dev-libs/gobject-introspection-1.82.0-r2 )
	x11-libs/cairo
	x11-libs/gdk-pixbuf:2
	x11-libs/pango
"
DEPEND="${RDEPEND}"
BDEPEND="
	dev-util/glib-utils
	dev-util/itstool
	>=sys-devel/gettext-0.19.8
	virtual/pkgconfig
	gtk-doc? ( dev-util/gi-docgen )
"

src_prepare() {
	# File providing Gentoo package names for various archivers
	cp -v "${FILESDIR}"/44.4-packages.match data/packages.match || die

	default
	xdg_environment_reset
}

src_configure() {
	local emesonargs=(
		-Drun-in-place=false
		$(meson_feature nautilus nautilus-actions)
		-Dnotification=enabled
		-Duse_native_appchooser=false
		-Dpackagekit=false
		-Dlibarchive=enabled
		$(meson_feature introspection)
		$(meson_feature gtk-doc api_docs)
	)
	meson_src_configure
}

src_install() {
	meson_src_install
	if use gtk-doc; then
		mkdir -p "${ED}"/usr/share/gtk-doc/ || die
		mv "${ED}"/usr/share/doc/file-roller "${ED}"/usr/share/gtk-doc/file-roller || die
	fi
}

pkg_postinst() {
	xdg_pkg_postinst
	gnome2_schemas_update
	if [[ -z "${REPLACING_VERSIONS}" ]]; then
		optfeature "7-zip archive support" "app-arch/7zip" "app-arch/p7zip"
		optfeature "ace archive support" "app-arch/unace"
		optfeature "arj archive support" "app-arch/arj"
		optfeature "brotli archive support" "app-arch/brotli"
		optfeature "cabinet archive support" "app-arch/cabextract"
		optfeature "cpio archive support" "app-alternatives/cpio"
		optfeature "deb archive support" "app-arch/dpkg"
		optfeature "iso image support" "app-cdr/cdrtools"
		optfeature "jar,zip archive support" "app-arch/zip" "app-arch/unzip"
		optfeature "lha archive support" "app-arch/lha"
		optfeature "lzop archive support" "app-arch/lzop"
		optfeature "lz4 archive support" "app-arch/lz4"
		optfeature "rar archive support" "app-arch/unrar" "app-arch/unar"
		optfeature "rpm archive support" "app-arch/rpm"
		optfeature "unstuff archive support" "app-arch/stuffit"
		optfeature "zstd archive support" "app-arch/zstd"
		optfeature "zoo archive support" "app-arch/zoo"
	fi
}

pkg_postrm() {
	xdg_pkg_postrm
	gnome2_schemas_update
}
