61 lines
1.5 KiB
Bash
Executable File
61 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# Performs a lua-language-server check on all files.
|
|
# luals-out/check.json will be produced on any issues, returning 1.
|
|
# Outputs only check.json to stdout, all other messages to stderr, to allow jq etc.
|
|
# $VIMRUNTIME specifies neovim runtime path, defaults to "/usr/share/nvim/runtime" if unset.
|
|
#
|
|
# Call with codestyle-check param to enable only codestyle-check
|
|
|
|
if [ -z "${VIMRUNTIME}" ]; then
|
|
export VIMRUNTIME="/usr/share/nvim/runtime"
|
|
fi
|
|
|
|
DIR_SRC="${PWD}/lua"
|
|
DIR_OUT="${PWD}/luals-out"
|
|
FILE_LUARC="${DIR_OUT}/luarc.json"
|
|
|
|
# clear output
|
|
rm -rf "${DIR_OUT}"
|
|
mkdir "${DIR_OUT}"
|
|
|
|
case "${1}" in
|
|
"codestyle-check")
|
|
jq \
|
|
'.diagnostics.neededFileStatus[] = "None" | .diagnostics.neededFileStatus."codestyle-check" = "Any"' \
|
|
"${PWD}/.luarc.json" > "${FILE_LUARC}"
|
|
|
|
;;
|
|
*)
|
|
# Add runtime.version for strict neovim baseline 5.1
|
|
# It is not set normally, to prevent luals loading 5.1 and 5.x, resulting in both versions being chosen on vim.lsp.buf.definition
|
|
jq \
|
|
'."runtime.version" = "Lua 5.1"' \
|
|
"${PWD}/.luarc.json" > "${FILE_LUARC}"
|
|
|
|
;;
|
|
esac
|
|
|
|
# execute inside lua directory to prevent luals itself from being checked
|
|
OUT=$(lua-language-server --check="${DIR_SRC}" --configpath="${FILE_LUARC}" --checklevel=Information --logpath="${DIR_OUT}" --loglevel=error)
|
|
RC=$?
|
|
|
|
echo "${OUT}" >&2
|
|
|
|
if [ $RC -ne 0 ]; then
|
|
echo "failed with RC=$RC"
|
|
exit $RC
|
|
fi
|
|
|
|
# any output is a fail
|
|
case "${OUT}" in
|
|
*Diagnosis\ completed,\ no\ problems\ found*)
|
|
exit 0
|
|
;;
|
|
*)
|
|
cat "${DIR_OUT}/check.json"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|