# Contributor: Jean-Louis Fuchs <safe.pen2857@rhizoome.ch>
# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=pandoc-cli
pkgver=3.6.4
pkgrel=0
pkgdesc="Universal markup converter"
url="https://pandoc.org/"
# limited by ghc
arch="aarch64 x86_64"
license="GPL-2.0-or-later"
makedepends="ghc cabal zlib-dev libffi-dev"
subpackages="$pkgname-doc"
source="https://hackage.haskell.org/package/pandoc-cli-$pkgver/pandoc-cli-$pkgver.tar.gz
	cabal.project.freeze
	"
options="net !check" # TODO

# but everyone probably used this for cli, so provide the name,
# even though renamed
provides="pandoc=$pkgver-r$pkgrel"
replaces="pandoc"

# Cabal seems to be built without sandbox, moving the cabal-dir into src
export CABAL_DIR="${CABAL_DIR:-"$srcdir/.cabal"}"

cabal_update() {
	local repo="hackage.haskell.org"

	# Default config uses HTTP, change it to HTTPS.
	[ -f "$CABAL_DIR"/config ] || {
		cabal user-config init
		cabal user-config update -a \
			"repository $repo {url: https://$repo/}"
	}

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

	# Resolve deps and generate fresh cabal.project.freeze with version constraints.
	(
		cd "$builddir" || {
			error 'Is $builddir set correctly?'
			return 1
		}
		cabal v2-update
		cabal v2-freeze \
			--strong-flags \
			--shadow-installed-packages \
			--constraint "pandoc +embed_data_files" \
			--flags "+server +lua"

		mv -v cabal.project.freeze "$startdir"/
	)

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

prepare() {
	default_prepare

	ln -svf "$srcdir"/cabal.project.freeze "$builddir"/
}

build() {
	cabal v2-update
	cabal v2-build pandoc-cli:exes \
		--jobs=${JOBS:-1} \
		--prefix=/usr \
		--docdir=/usr/share/doc/$pkgname \
		--flags "+server +lua" \
		--sysconfdir=/etc
}

package() {
	# See https://github.com/haskell/cabal/issues/6919#issuecomment-761563498
	cabal list-bin pandoc-cli:exes |
		xargs install -Dvm755 -t "$pkgdir"/usr/bin/

	ln -sfv pandoc "$pkgdir"/usr/bin/pandoc-server

	install -Dvm644 man/*.1 -t "$pkgdir"/usr/share/man/man1/
}

sha512sums="
7ef771523ac1de6e4d071244513db537d33a0625f22e794eb73a32671d8c47ce16013fca12e678384bf168b55d33f145a8ed2d9e6c57b926c0f56131b81b3c98  pandoc-cli-3.6.4.tar.gz
b602bdd6a2ddbc515d3010bda56dd6968de2ba7fbb60554b4199eb9061f6612e3b690dada0c08ad9ba94512b7048d161171ccffb0928c251cbe7ecc646dacb18  cabal.project.freeze
"
