# Contributor: Celeste <cielesti@protonmail.com>
# Maintainer: Celeste <cielesti@protonmail.com>
pkgname=jj_tui
pkgver=0.7.4
pkgrel=0
pkgdesc="TUI for the Jujutsu version control system"
url="https://github.com/faldor20/jj_tui"
arch="all !armhf !armv7 !x86 !s390x" # jujutsu
license="MIT"
depends="jujutsu"
makedepends="
	bash
	dune
	linux-headers
	ocaml5-compiler-libs
	opam-monorepo
	"
subpackages="$pkgname-doc"
source="https://github.com/faldor20/jj_tui/archive/refs/tags/v$pkgver/jj_tui-$pkgver.tar.gz
	jj_tui.opam.locked

	opam-file.patch
	"

export OPAMROOT="${OPAMROOT:-"$srcdir/opam-root"}"
export OPAMLOGS="${OPAMLOGS:-"$srcdir/opam-logs"}"

_opam_opts="-v -y --cli=2.2 --no-self-upgrade"
_lockfile_name="$pkgname.opam.locked"
_monorepo_opts="-v --lockfile=$_lockfile_name"

_minimal_update=true
recreate() {
	_minimal_update=false
}

opam_init() {
	opam init $_opam_opts \
		--compiler=ocaml-system \
		--disable-sandboxing \
		--no-setup
}

opam_lock() {
	[ -f "$OPAMROOT"/config ] || {
		opam_init

		opam repository $_opam_opts \
			add dune-universe \
			git+https://github.com/dune-universe/opam-overlays.git
	}

	[ -d "$builddir" ] || abuild unpack
	msg "Freezing $pkgname dependencies"

	# Resolve deps and update $pkgname.opam.locked, unless
	# recreate() is called, in which case create it afresh.
	(
		cd "$builddir" || {
			error 'Is $builddir set correctly?'
			return 1
		}
		opam update $_opam_opts

		if ! want_check; then
			_monorepo_opts="$_monorepo_opts --build-only"
		fi
		if $_minimal_update; then
			cp -v "$srcdir"/$_lockfile_name .

			_monorepo_opts="$_monorepo_opts --minimal-update"
		fi
		opam-monorepo lock $_monorepo_opts

		mv -v $_lockfile_name "$startdir"/
	)

	if ! abuild checksum; then
		die "Failed to update checksum, run 'abuild checksum' manually"
	fi
}

prepare() {
	default_prepare

	[ -f "$OPAMROOT"/config ] || opam_init
	ln -svf "$srcdir"/$_lockfile_name "$builddir"/
	opam-monorepo pull $_monorepo_opts --yes
}

build() {
	dune build --release --verbose
}

check() {
	dune runtest --build-dir=.testenv
}

package() {
	dune install --destdir="$pkgdir" --sections=bin,doc

	rm -v "$pkgdir"/usr/bin/widget_test
}

sha512sums="
c81de11e0affa726fa163e67afbca83c80ee5dbd548df5234d6cd1fb3a87275e68d03a88d16bbb362f1d6ce92ec52f7e8ef3c7ae1a76bbb0dd14e926b153a5da  jj_tui-0.7.4.tar.gz
f0008ba5a36d7514e155d124fb59b7ef828b14d32a426c26e763031d0c2cb9914dd730ccf600f3de348f10e228fdf18077373fe128baeaa78acb082e0fb1cc32  jj_tui.opam.locked
2314828ef52d4d083dc7165e9e626e0c406ca0801bd3db0fa393e295705dad018bc888a740e72ca768f63662031e3b915970e8b323d87b1593c4dc2fb8d911a7  opam-file.patch
"