# Copyright 1999-2025 Gentoo Authors
# Copyright 2026 Bryan Gardiner <bog@khumba.net>
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake xdg

DESCRIPTION="Secure, cross-platform password manager (fork of KeePassXC 2.7.10)"
HOMEPAGE="https://chipass.org/"

if [[ "${PV}" = *9999* ]] ; then
	inherit git-r3

	EGIT_BRANCH="main"
	EGIT_REPO_URI="https://codeberg.org/ChiPass/ChiPass"
else
	if [[ "${PV}" == *_beta* ]] ; then
		SRC_URI="https://codeberg.org/ChiPass/ChiPass/archive/${PV/_/-}.tar.gz
			-> ${P}.tar.gz"
		S="${WORKDIR}/${P/_/-}"
	else
		SRC_URI="https://codeberg.org/ChiPass/ChiPass/archive/${PV}.tar.gz
			-> ${P}.tar.gz"
	fi

	KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
fi

# COPYING order
LICENSE="|| ( GPL-2 GPL-3 ) BSD LGPL-2.1 MIT LGPL-2 CC0-1.0 Apache-2.0 GPL-2+ BSD-2"
SLOT="0"
IUSE="X autotype browser doc keeshare +keyring +network +ssh-agent test yubikey"

RESTRICT="!test? ( test )"
REQUIRED_USE="autotype? ( X )"

RDEPEND="
	!app-admin/keepassxc
	app-crypt/argon2:=
	dev-libs/botan:3=
	dev-libs/zxcvbn-c
	dev-qt/qt5compat:6
	dev-qt/qtbase:6=[concurrent,dbus,gui,network,widgets]
	dev-qt/qtsvg:6
	media-gfx/qrencode:=
	sys-libs/readline:0=
	virtual/minizip:=
	autotype? (
		x11-libs/libX11
		x11-libs/libXtst
	)
	yubikey? (
		dev-libs/libusb:1
		sys-apps/pcsc-lite
	)
"
DEPEND="
	${RDEPEND}
	test? ( dev-qt/qtbase:6[test] )
"
BDEPEND="
	doc? (
		dev-ruby/asciidoctor
	)
"

src_prepare() {
	if ! [[ "${PV}" =~ _beta|9999 ]]; then
		echo "${PV}" > .version || die
	fi

	# Unbundle zxcvbn, bug 958062
	rm -r ./src/thirdparty/zxcvbn || die

	cmake_src_prepare
}

src_configure() {
	local -a mycmakeargs=(
		# Gentoo users enable ccache via e.g. FEATURES=ccache or
		# other means. We don't want the build system to enable it for us.
		-DWITH_CCACHE="OFF"
		-DWITH_GUI_TESTS="OFF"
		-DWITH_XC_BOTAN3="ON"
		-DWITH_XC_UPDATECHECK="OFF"

		-DWITH_TESTS="$(usex test)"
		-DWITH_XC_AUTOTYPE="$(usex autotype)"
		-DWITH_XC_BROWSER="$(usex browser)"
		-DWITH_XC_BROWSER_PASSKEYS="$(usex browser)"
		-DWITH_XC_DOCS="$(usex doc)"
		-DWITH_XC_FDOSECRETS="$(usex keyring)"
		-DWITH_XC_KEESHARE="$(usex keeshare)"
		-DWITH_XC_NETWORKING="$(usex network)"
		-DWITH_XC_SSHAGENT="$(usex ssh-agent)"
		-DWITH_XC_X11="$(usex X)"
		-DWITH_XC_YUBIKEY="$(usex yubikey)"
	)

	if [[ "${PV}" == *_beta* ]] ; then
		mycmakeargs+=(
			-DOVERRIDE_VERSION="${PV/_/-}"
		)
	fi

	cmake_src_configure
}