EAPI=8

inherit multilib

DESCRIPTION="Utility combining features of watch and cat"
HOMEPAGE="https://github.com/norayr/watchcat"
WATCHCAT_COMMIT="8faf27c616ccc2ad9f313d6e72cb8176e1503505"
SRC_URI="https://github.com/norayr/watchcat/archive/${WATCHCAT_COMMIT}.tar.gz -> ${P}-${WATCHCAT_COMMIT}.tar.gz"
S="${WORKDIR}/watchcat-${WATCHCAT_COMMIT}"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"
IUSE="test"

BDEPEND="
	>=dev-lang/voc-4.0.0
	test? ( dev-lang/python:* )
"

DEPEND="
	>=dev-lang/voc-4.0.0
	>=dev-oberon/pipes-0.9.0-r2
"

RDEPEND="
	>=dev-lang/voc-4.0.0
"

src_compile() {
	local vocroot="${T}/voc"
	local system_voc="${BROOT%/}/usr/share/voc"
	local libdir="${BROOT%/}/usr/$(get_libdir)"

	mkdir -p "${vocroot}" build || die

	cp -a "${system_voc}/." "${vocroot}/" \
		|| die "failed to prepare writable VOCROOT"

	unset OBERON MODULES
	export VOCROOT="${vocroot}"
	export VOCLIBDIR="${libdir}"

	# Only pipes remains separate; VOC supplies strutils and clock access.
	# Static Oberon libraries must follow watchcat.c on the linker command line.
	export LDFLAGS="${LDFLAGS} -lvoc-pipes"

	cd build || die

	voc -m ../src/watchcat.Mod \
		|| die "failed to build watchcat"
}

src_test() {
	python3 test/test-timestamps.py "${S}/build/watchcat" \
		|| die "timestamp tests failed"
}

src_install() {
	dobin build/watchcat
	dodoc readme.md
}