72 lines
2.9 KiB
Bash
Executable File
72 lines
2.9 KiB
Bash
Executable File
#!/nix/store/agkxax48k35wdmkhmmija2i2sxg8i7ny-bash-5.2p26/bin/sh
|
|
# SPDX-License-Identifier: Unlicense
|
|
|
|
# This is free and unencumbered software released into the public domain.
|
|
#
|
|
# Anyone is free to copy, modify, publish, use, compile, sell, or distribute
|
|
# this software, either in source code form or as a compiled binary, for any
|
|
# purpose, commercial or non-commercial, and by any means.
|
|
#
|
|
# In jurisdictions that recognize copyright laws, the author or authors of
|
|
# this software dedicate any and all copyright interest in the software to
|
|
# the public domain. We make this dedication for the benefit of the public
|
|
# at large and to the detriment of our heirs and successors. We intend this
|
|
# dedication to be an overt act of relinquishment in perpetuity of all
|
|
# present and future rights to this software under copyright law.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
#
|
|
# For more information, please refer to <https://unlicense.org/>
|
|
|
|
|
|
# A shim which acts as a command-line interface adapter to use Neovim as a Lua
|
|
# interpreter.
|
|
|
|
# Set custom XDG base directory paths to isolate the test Neovim from the
|
|
# user's own configuration and data files.
|
|
export XDG_CONFIG_HOME='test/xdg/config/'
|
|
export XDG_STATE_HOME='test/xdg/local/state/'
|
|
export XDG_DATA_HOME='test/xdg/local/share/'
|
|
|
|
# Handle Lua command-line arguments; not all options are supported
|
|
while getopts 'ilEve:' opt; do
|
|
case $opt in
|
|
e) lua_expr=$OPTARG;;
|
|
v) nvim --version; exit;;
|
|
i | l | E) echo "Option '$opt' not supported by shim"; exit 1;;
|
|
esac
|
|
done
|
|
|
|
|
|
# We need to add this plugin to the custom configuration. The easiest way is
|
|
# to create a symlink. Why not always have a symlink in the project? The Lua
|
|
# language server will search for Lua files in every directory, so if it enters
|
|
# the symlink it will be trapped in a cycle. What we do instead is create the
|
|
# symlink only for the duration of a test session and remove it again
|
|
# afterwards.
|
|
|
|
# We need separate symlinks if we want to run different tasks in parallel.
|
|
# Otherwise the one the finishes first would delete the symlink from underneath
|
|
# the one that is still running.
|
|
uuid=$(uuidgen)
|
|
mkdir -p ${XDG_DATA_HOME}/nvim/site/pack/self-${uuid}/start/
|
|
ln -fs $(pwd) ${XDG_DATA_HOME}/nvim/site/pack/self-${uuid}/start/
|
|
|
|
if [ -n "$lua_expr" ]; then
|
|
nvim --headless -c "lua $lua_expr" -c 'quitall!'
|
|
else
|
|
# We have to explicitly enable plugins, see ':h -l'
|
|
nvim --cmd 'set loadplugins' -l $@
|
|
fi
|
|
|
|
exit_code=$?
|
|
|
|
rm -rf ${XDG_DATA_HOME}/nvim/site/pack/self-${uuid}/
|
|
|
|
exit $exit_code
|