# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=jujutsu
pkgver=0.29.0
pkgrel=0
pkgdesc="Git-compatible distributed version control system"
url="https://github.com/jj-vcs/jj"
# armhf, armv7, x86: tests fail
# s390x: serde_bser crate fails to build
arch="all !armhf !armv7 !x86 !s390x"
license="Apache-2.0"
depends="git"
makedepends="
	cargo
	cargo-auditable
	libgit2-dev
	libssh-dev
	openssl-dev
	zstd-dev
	"
checkdepends="
	gpg
	gpg-agent
	gpgsm
	openssh-keygen
	"
subpackages="
	$pkgname-doc
	$pkgname-bash-completion
	$pkgname-fish-completion
	$pkgname-zsh-completion
	"
source="https://github.com/jj-vcs/jj/archive/v$pkgver/jujutsu-$pkgver.tar.gz
	"
builddir="$srcdir/jj-$pkgver"
options="net" # cargo fetch

export LIBGIT2_NO_VENDOR=1 # use system libgit2
export LIBSSH2_SYS_USE_PKG_CONFIG=1
export ZSTD_SYS_USE_PKG_CONFIG=1

if [ "$CARCH" != "loongarch64" ]; then
	checkdepends="
		$checkdepends
		taplo
		"
fi

# taken from main/rust/APKBUILD
_clear_vendor_checksums() {
	sed -i 's/\("files":{\)[^}]*/\1/' vendor/$1/.cargo-checksum.json
}

prepare() {
	default_prepare

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

build() {
	cargo auditable build --frozen --release --bin jj

	for shell in bash fish zsh; do
		./target/release/jj util completion $shell > jj.$shell
	done

	./target/release/jj util install-man-pages .
}

check() {
	# test_gc: flaky on s390x
	case "$CARCH" in
	s390x)
		_test_args="-- --skip test_git_backend::test_gc"
		;;
	aarch64)
		_test_args="-- --skip test_git::test_shallow_commits_lack_parents"
		;;
	loongarch64)
		_test_args="-- --skip test_config_schema"
		;;
	esac

	cargo test --frozen $_test_args
}

package() {
	install -Dvm755 target/release/jj -t "$pkgdir"/usr/bin/

	install -Dvm644 jj.bash \
		"$pkgdir"/usr/share/bash-completion/completions/jj
	install -Dvm644 jj.fish \
		"$pkgdir"/usr/share/fish/vendor_completions.d/jj.fish
	install -Dvm644 jj.zsh \
		"$pkgdir"/usr/share/zsh/site-functions/_jj

	install -dvm755 "$pkgdir"/usr/share/man
	cp -av man1 "$pkgdir"/usr/share/man/
	install -dvm755 "$pkgdir"/usr/share/doc
	cp -av docs "$pkgdir"/usr/share/doc/$pkgname
}

sha512sums="
c35f390a397458099cae3805cb84a53f8cd1c2298c096591c14f531e0ad149af06a03644a3fabe008a72ae38de2c8647452293850a077d29e3ecb3f41af78da2  jujutsu-0.29.0.tar.gz
"
