# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8
inherit java-pkg-2

DESCRIPTION="LSP language server for LanguageTool supporting LaTeX, Markdown, and others"
HOMEPAGE="https://valentjn.github.io/ltex/"
SRC_URI="https://github.com/valentjn/ltex-ls/releases/download/${PV}/${P}.tar.gz"

LICENSE="MPL-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"

CP_DEPEND="
	dev-java/slf4j-api:0
	dev-java/slf4j-nop:0
	dev-java/guava:0
	dev-java/icu4j:70
	dev-java/jansi:2
	dev-java/commons-lang:3.6
	dev-java/commons-logging:0
	dev-java/commons-text:0
	dev-java/jackson-core:0
	dev-java/jackson-annotations:2
	dev-java/jackson-databind:0
	dev-java/jaxb-api:2
	dev-java/jaxb-runtime:4
	dev-java/picocli:0
	dev-java/protobuf-java:0
	dev-java/stax2-api:0
	dev-java/woodstox-core:0
	dev-java/json:0
	dev-java/j2objc-annotations:0
	dev-java/istack-commons-runtime:0
	dev-java/hamcrest-core:1.3
	dev-java/failureaccess:0
	dev-java/error-prone-annotations:0
	dev-java/checker-framework-qual:0
	dev-java/animal-sniffer-annotations:0
	dev-java/fastinfoset:0
"

RDEPEND="
	>=virtual/jre-1.8
	${CP_DEPEND}
"

src_prepare() {
	default

	rm lib/{slf4j,guava,icu4j,junit,hamcrest-core,FastInfoset,animal-sniffer-annotations}*.jar || die
	# rm lib/jansi*.jar || die # somewhy removing it causes ltex-ls to stop produce colors/boldness ascii-sequences
	rm lib/checker-qual-*.jar || die # may cuse breakages. Needs testing.
	rm lib/{commons-{lang3,text,logging},error_prone_annotations,failureaccess,istack-commons-runtime}*.jar || die
	rm lib/{j2objc-annotations,jackson,jaxb-api,json,picocli,protobuf-java,stax2-api,woodstox-core}*.jar || die

	mv lib/"${P/x-l/xl}".jar lib/"${PN}".jar || die

	java-pkg-2_src_prepare
}

src_compile() { :; }

_gen-cp() {
	debug-print-function ${FUNCNAME} "${@}"

	local atom
	local pat="/(([[:alnum:]+_-]+)-[0-9]+(\.[0-9]+)*[a-z]?(_[[:alnum:]]+)*(-r[0-9]*)?|[[:alnum:]+_-]+):([[:alnum:]+_.-]+)"
	for atom in ${CP_DEPEND}; do
		if [[ ${atom} =~ ${pat} ]]; then
			atom=${BASH_REMATCH[2]:-${BASH_REMATCH[1]}}
			[[ ${BASH_REMATCH[6]} != 0 ]] && atom+=-${BASH_REMATCH[6]}
			local regex="(^|\s|,)${atom}($|\s|,)"
			[[ ${!1} =~ ${regex} ]] || declare -g ${1}+=${!1:+,}${atom}
		else
			die "Invalid CP_DEPEND atom ${atom}, ensure a SLOT is included"
		fi
	done
}

src_install() {
	java-pkg_dojar lib/*.jar

	java-pkg_dolauncher ${PN} --main org.bsplines.ltexls.LtexLanguageServerLauncher
	# java-pkg_dolauncher ${PN}-cli --main org.bsplines.lspcli.LspCliLauncher
	# TODO: integrate with json from bin/

	dodoc ACKNOWLEDGMENTS.md README.md

	unset MY_DEPEND
	_gen-cp MY_DEPEND
	java-pkg_register-dependency "${MY_DEPEND}"
}