# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Contributor: August Klein <amatcoder@gmail.com>
# Contributor: Orson Teodoro <orsonteodoro@hotmail.com>
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=keepassxc
pkgver=2.7.10
pkgrel=0
pkgdesc="Community-driven port of the Windows application Keepass Password Safe"
url="https://keepassxc.org/"
arch="all"
license="GPL-2.0-only OR GPL-3.0-only"
provides="dbus:org.freedesktop.Secrets"
provider_priority=5 # Smallest priority, unusual setup
depends="hicolor-icon-theme"
makedepends="
	argon2-dev
	asciidoctor
	botan3-dev
	cmake
	libqrencode-dev
	libusb-dev
	libxi-dev
	libxtst-dev
	minizip-dev
	pcsc-lite-dev
	qt5-qtbase-dev
	qt5-qtsvg-dev
	qt5-qttools-dev
	qt5-qtx11extras-dev
	readline-dev
	samurai
	zlib-dev
	"
checkdepends="dbus xclip xvfb-run"
install="$pkgname.post-upgrade"
subpackages="
	$pkgname-doc
	$pkgname-lang::noarch
	$pkgname-autotype
	$pkgname-firefox-manifest:_firefox_manifest:noarch
	"
source="https://github.com/keepassxreboot/keepassxc/archive/refs/tags/$pkgver/keepassxc-$pkgver.tar.gz
	tests.patch
	doc-path.patch
	org.keepassxc.keepassxc_browser.json
	"

build() {
	export CXXFLAGS="$CXXFLAGS -flto=auto"

	cmake -G Ninja -B build \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=/usr/lib \
		-DCMAKE_BUILD_TYPE=MinSizeRel \
		-DKEEPASSXC_BUILD_TYPE=Release \
		-DWITH_XC_AUTOTYPE=ON \
		-DWITH_XC_NETWORKING=ON \
		-DWITH_XC_BROWSER=ON \
		-DWITH_XC_BROWSER_PASSKEYS=ON \
		-DWITH_XC_YUBIKEY=ON \
		-DWITH_XC_SSHAGENT=ON \
		-DWITH_XC_KEESHARE=ON \
		-DWITH_XC_UPDATECHECK=OFF \
		-DWITH_XC_FDOSECRETS=ON \
		-DWITH_GUI_TESTS=ON
	cmake --build build
}

check() {
	QT_QPA_PLATFORM=xcb xvfb-run -a ctest --test-dir build -j1
}

package() {
	DESTDIR="$pkgdir" cmake --install build

	install -D -m 0644 -t "$pkgdir"/usr/lib/mozilla/native-messaging-hosts \
		"$srcdir"/org.keepassxc.keepassxc_browser.json

	install -D -m 0644 -t "$pkgdir"/usr/share/doc/$pkgname/ \
		CHANGELOG.md README.md

	rm -rf "$pkgdir"/usr/share/keepassxc/docs
}

lang() {
	pkgdesc="Languages for package $pkgname"
	depends=""
	install_if="$pkgname=$pkgver-r$pkgrel lang"
	local langdir='usr/share/keepassxc/translations'

	amove $langdir

	mkdir -p "$pkgdir"/$langdir
	mv "$subpkgdir"/$langdir/keepassxc_en_US.qm "$pkgdir"/$langdir/
}

autotype() {
	pkgdesc="KeePassXC Auto-Type feature for X11"
	install_if="$pkgname=$pkgver-r$pkgrel xorg-server"
	depends=""

	amove usr/lib/keepassxc/libkeepassxc-autotype-xcb.so
}

_firefox_manifest() {
	pkgdesc="KeePassXC native app manifest for Firefox (Browser extension not included)"
	depends=""

	amove usr/lib/mozilla
}

sha512sums="
265edbafdfd2951219fac8f28fe72672be798dbd93242d6b6d528a017adfed2f16f98ad753b6cdff0eca3f4d7158c9de87aa626ff7e66d3bac470595e248e271  keepassxc-2.7.10.tar.gz
17b70ceffd0f70a83fc64c607db3019548e16ca3101e101300d7e930842664936759bbfe06a4a872b436feccc2e7a4b203de8ea47abfa151bd23d8eddaa3b858  tests.patch
f1d1978db4da56064f6f7eb37f61f82169020afc18de3be4afbe46f6bbb6292cc9551bf07a454a89bc5b09ebe72a153f08bff9f62492e3c1b69b6919da8be94e  doc-path.patch
977f1f76c8c7be819b51417481664bf22d3138978f450bf2b762ebad8f4aee7f6384f090f66b5bee8c0a2a182d4f578c1c4c6cd9a2d80ab65716e24c65d43aee  org.keepassxc.keepassxc_browser.json
"
