# Copyright 2020-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

# TODO: unbundle deps, set flags correctly, verbose luamake, less sed hacks

EAPI=8

LUA_COMPAT=( lua{5-{1,3,4},jit} )

inherit lua-single ninja-utils prefix toolchain-funcs

DESCRIPTION="A language server that offers Lua language support"
HOMEPAGE="https://github.com/LuaLS/lua-language-server"
SRC_URI="https://github.com/LuaLS/${PN}/releases/download/${PV}/${P}-submodules.zip -> ${P}.zip"
S="${WORKDIR}"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
IUSE="test"
REQUIRED_USE="${LUA_REQUIRED_USE}"

RESTRICT="!test? ( test )"

DEPEND="${LUA_DEPS}"
RDEPEND="${DEPEND}"
BDEPEND="
	app-arch/unzip
	dev-build/ninja
"

QA_PREBUILT="/opt/lua-language-server/bin/lua-language-server"

src_prepare() {
	sed -i "s/^cc = gcc$/cc = $(tc-getCC)/" \
		3rd/luamake/compile/ninja/linux.ninja || die
	sed -i "/require \"make.detect_platform\"/a lm.cc = '$(tc-getCC)'" \
		make.lua || die
	sed -i "s/flags = \"-Wall -Werror\"/flags = \"-Wall ${CXXFLAGS}\"/" \
		make/code_format.lua || die

	prefixify_ro "${FILESDIR}"/wrapper.sh

	default
}

src_compile() {
	eninja -C 3rd/luamake -f compile/ninja/linux.ninja $(usex test '' 'luamake')
	./3rd/luamake/luamake $(usex test '' 'all') || die
}

src_install() {
	newbin "${T}"/wrapper.sh ${PN}

	into /opt/${PN}
	dobin bin/${PN}

	insinto /opt/${PN}/bin
	doins bin/main.lua

	insinto /opt/${PN}
	doins -r debugger.lua main.lua locale meta script

	einstalldocs
}