# Maintainer: Orhun Parmaksız <orhun@archlinux.org>
# Maintainer: Maxim Baz <archlinux at maximbaz dot com>
# Contributor: Wojciech Kępka (wojciech@wkepka.dev)

pkgname=helix-git
_pkgname=helix
pkgver=25.07.r984.g079a789
pkgrel=1
pkgdesc="A post-modern modal text editor"
arch=('x86_64' 'aarch64' 'riscv64')
url="https://helix-editor.com"
license=('MPL-2.0')
depends=('hicolor-icon-theme')
makedepends=('cargo' 'git')
optdepends=(
	'ansible-language-server: for Ansible language support'
	'bash-language-server: for Bash language support'
	'clang: for C/C++ language support'
	'dart: for Dart language support'
	'elvish: for elvish language support'
	'gopls: for Go language support'
	'haskell-language-server: for Haskell language support'
	'julia: for Julia language support'
	'lua-language-server: for Lua language support'
	'marksman: for Marksman language support'
	'python-lsp-server: for Python language support'
	'r: for R and rmarkdown language support'
	'racket: for racket language support'
	'rust-analyzer: for Rust language support'
	'taplo: for TOML language support'
	'texlab: for LaTeX language support'
	'typescript-language-server: for jsx, tsx, typescript language support'
	'typst-lsp: for Typst language support'
	'vue-language-server: for Vue language support'
	'vscode-css-languageserver: for CSS and SCSS support'
	'vscode-html-languageserver: for HTML language support'
	'vscode-json-languageserver: for JSON language support'
	'yaml-language-server: for YAML language support'
	'zls: for Zig language support'
)
conflicts=("${_pkgname}")
provides=("${_pkgname}")
install="${_pkgname}.install"
source=("git+https://github.com/helix-editor/${_pkgname}.git")
sha256sums=('SKIP')
options=('!lto')

pkgver() {
	cd "${_pkgname}/"
	git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//'
}

prepare() {
	cd "${_pkgname}/"
	# NOTE: we are renaming hx to helix so there is no conflict with hex (providing hx)
	sed -i "s|hx|${_pkgname}|g" contrib/completion/hx.*
	sed -i "s|hx|${_pkgname}|g" contrib/Helix.desktop
	cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
	cd "${_pkgname}/"
	cargo build --frozen --release
}

check() {
	cd "${_pkgname}/"
	cargo test --frozen
}

package() {
	cd "${_pkgname}/"
	install -Dm755 "target/release/hx" -t "${pkgdir}/usr/lib/${_pkgname}/"
	install -d "${pkgdir}/usr/bin/"
	ln -sv "/usr/lib/${_pkgname}/hx" "${pkgdir}/usr/bin/${_pkgname}"
	install -Dm644 README.md -t "${pkgdir}/usr/share/doc/${_pkgname}/"

	local runtime_dir="${pkgdir}/usr/lib/${_pkgname}/runtime"
	install -d "${runtime_dir}/grammars"

	cp -r runtime/{queries,themes} "${runtime_dir}"

	find "runtime/grammars" -type f -name '*.so' -exec \
		install -Dm755 {} -t "${runtime_dir}/grammars" \;
	install -Dm644 "runtime/tutor" -t "${runtime_dir}"

	cd contrib/
	install -Dm644 "completion/hx.bash" "${pkgdir}/usr/share/bash-completion/completions/${_pkgname}"
	install -Dm644 "completion/hx.fish" "${pkgdir}/usr/share/fish/vendor_completions.d/${_pkgname}.fish"
	install -Dm644 "completion/hx.zsh" "${pkgdir}/usr/share/zsh/site-functions/_${_pkgname}"
	install -Dm644 "completion/hx.elv" "${pkgdir}/usr/share/elvish/lib/${_pkgname}.elv"
	install -Dm644 "Helix.desktop" "${pkgdir}/usr/share/applications/${_pkgname}.desktop"
	install -Dm644 "Helix.appdata.xml" -t "${pkgdir}/usr/share/metainfo/"
	install -Dm644 "${_pkgname}.png" -t "${pkgdir}/usr/share/icons/hicolor/256x256/apps/"
}

# vim: ts=2 sw=2 et:
