#!/usr/bin/env bash

set -euo pipefail

# shellcheck disable=SC1091
source "${XDG_DATA_HOME}/buddy-up/includes/utils.sh"

main() (
	APP=lua-language-server
	VERSION=${VERSION:-3.19.1}
	DEST=${XDG_DATA_HOME}/apps/releases/${APP}
	URL=https://github.com/LuaLS/lua-language-server/releases/download/${VERSION}/lua-language-server-${VERSION}-$(get_os)-$(get_arch).tar.gz

	extract_tarball "${URL}" "${DEST}/${VERSION}"
	set_current_link "${DEST}" "${VERSION}"

	# lua-language-server locates main.lua next to its own argv[0], without
	# resolving symlinks, so it can't be launched through a symlinked
	# executable (only a symlinked directory in the path works). Use a
	# wrapper script instead of set_link.
	cat >"${XDG_BIN_HOME}/lua-language-server" <<EOF
#!/usr/bin/env bash
exec "${DEST}/current/bin/lua-language-server" "\$@"
EOF
	chmod +x "${XDG_BIN_HOME}/lua-language-server"
)

get_arch() (
	case $(uname -m) in
	x86_64*) echo x64 ;;
	arm64*) echo arm64 ;;
	aarch64*) echo arm64 ;;
	*)
		echo >&2 "unsupported architecture: $(uname -m)"
		exit 1
		;;
	esac
)

main "$@"
