# Contributor: Chris Kruger <alpine@krugerheavyindustries.com>
# Contributor: Fabricio Silva <hi@fabricio.dev>
# Maintainer: Fabricio Silva <hi@fabricio.dev>
pkgname=vaultwarden
pkgver=1.33.2
pkgrel=0
pkgdesc="Bitwarden alternative backend"
_bw_web_ver=2025.1.1
provides="bitwarden_rs=$pkgver-r$pkgrel"
replaces="bitwarden_rs"
url="https://github.com/dani-garcia/vaultwarden"
arch="all !ppc64le !s390x !riscv64 !loongarch64" # ring crate has platform specific asm - no ppc support, no rust on s390x
license="AGPL-3.0-only"
makedepends="
	cargo
	cargo-auditable
	libpq-dev
	mariadb-dev
	mimalloc2-dev
	openssl-dev
	sqlite-dev
	"
subpackages="$pkgname-web-vault::noarch $pkgname-openrc"
install="$pkgname.pre-install $pkgname.post-upgrade"
pkgusers="vaultwarden"
pkggroups="vaultwarden"
source="$pkgname-$pkgver.tar.gz::https://github.com/dani-garcia/vaultwarden/archive/$pkgver.tar.gz
	$pkgname-webvault-$_bw_web_ver.tar.gz::https://github.com/dani-garcia/bw_web_builds/releases/download/v$_bw_web_ver/bw_web_v$_bw_web_ver.tar.gz
	$pkgname.initd
	$pkgname.confd"
options="net" # cargo fetch

# secfixes:
#   1.33.0-r0:
#     - GHSA-f7r5-w49x-gxm3
#     - GHSA-h6cc-rc6q-23j4
#     - GHSA-j4h8-vch3-f797
#   1.32.0-r0:
#     - CVE-2024-39924
#     - CVE-2024-39925
#     - CVE-2024-39926

prepare() {
	default_prepare

	mkdir -p .cargo

	local target="$(rustc -vV | sed -n 's/host: //p')"

	# Build against system-provided mimalloc.
	cat >> .cargo/config.toml <<-EOF
		[target.$target]
		mimalloc = { rustc-link-lib = ["mimalloc"] }
	EOF

	cargo fetch --target="$CTARGET" --locked
}

build() {
	export VW_VERSION=$pkgver-r$pkgrel
	cargo auditable build --release --features sqlite,postgresql,mysql,enable_mimalloc --frozen
}

check() {
	cargo test --release --features sqlite,postgresql,mysql,enable_mimalloc --frozen
}

package() {
	install -Dm755 target/release/vaultwarden -t "$pkgdir"/usr/bin/
	install -Dm640 .env.template -o vaultwarden -g vaultwarden -t "$pkgdir"/var/lib/vaultwarden

	(cd "$srcdir"/web-vault; find . -type f -exec \
		install -Dm644 {} "$pkgdir"/usr/share/webapps/vaultwarden-web/{} \;)
	(cd "$builddir"/src/static; find . -type f -exec \
		install -Dm644 {} "$pkgdir"/usr/share/webapps/vaultwarden-web/{} \;)

	install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
	install -Dm655 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
}

vault() {
	pkgdesc="$pkgdesc (web ui)"

	amove usr/share/webapps

	# move templates back
	mkdir -p "$pkgdir"/usr/share/webapps/vaultwarden-web
	mv "$subpkgdir"/usr/share/webapps/vaultwarden-web/templates "$pkgdir"/usr/share/webapps/vaultwarden-web/
}

sha512sums="
51f1d431794f2b4bf1f3b70a66f3fc9329cf74732201faaa0948ac0025f1384a486d0a5c757506068ea822f13c6c5bf10429cfe1a291e4bb154bc2332aba778d  vaultwarden-1.33.2.tar.gz
44da40761cfe11915b83380fc7e5bff5f828783996feb0b67c69d14536618fc299a82c1234c86cf314ede89d892908be437afb61945aba029951fdba929da5d2  vaultwarden-webvault-2025.1.1.tar.gz
2b11e83be40665877f201979fa850546dceb69beb07f41a5ef44639bc1b191a0735e6ad865bc6e5e77481ea2e2426f4533cc863cb536fb9e2d422ad8761d293a  vaultwarden.initd
ad35ad5314600abb184cf28c78e0937efac4426f43d5bf60f72a1c41256ce31ae07e26c2fb5bf0108c49bd9d16596618cb0f5337c7dad33972310bd84bf68957  vaultwarden.confd
"
