neovim-require-check-hook: discover modules from output (#527642)
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
*/
|
||||
{
|
||||
vimUtils,
|
||||
neovimUtils,
|
||||
writeText,
|
||||
neovim,
|
||||
vimPlugins,
|
||||
@@ -491,4 +492,70 @@ pkgs.lib.recurseIntoAttrs rec {
|
||||
'';
|
||||
passthru.requiredLuaModules = [ luassert ];
|
||||
};
|
||||
|
||||
nvim_require_check_neovim_plugin =
|
||||
let
|
||||
luaPkg = neovim-unwrapped.lua.pkgs.buildLuarocksPackage {
|
||||
pname = "neovim-require-check-fails";
|
||||
version = "0.0.1-1";
|
||||
src = runCommandLocal "neovim-require-check-fails-src" { } ''
|
||||
mkdir -p "$out"
|
||||
cat > "$out/neovim-require-check-fails-0.0.1-1.rockspec" <<'EOF'
|
||||
package = "neovim-require-check-fails"
|
||||
version = "0.0.1-1"
|
||||
source = {
|
||||
url = "."
|
||||
}
|
||||
build = {
|
||||
type = "none"
|
||||
}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
in
|
||||
testers.testBuildFailure (
|
||||
neovimUtils.buildNeovimPlugin {
|
||||
luaAttr = luaPkg;
|
||||
doCheck = true;
|
||||
postInstall = ''
|
||||
mkdir -p "$out/lua"
|
||||
cat > "$out/lua/require_check_fails.lua" <<'EOF'
|
||||
error("neovimRequireCheckHook required installed module")
|
||||
EOF
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
nvim_require_check_ignores_test_modules = vimUtils.buildVimPlugin {
|
||||
pname = "neovim-require-check-ignores-test-modules";
|
||||
version = "0";
|
||||
src = runCommandLocal "neovim-require-check-ignores-test-modules-src" { } ''
|
||||
mkdir -p \
|
||||
"$out/lua/require-check-ignores"/{debug,script,scripts,test,tests,spec,_meta} \
|
||||
"$out/lua/require-check-ignores"
|
||||
cat > "$out/lua/require-check-ignores/init.lua" <<'EOF'
|
||||
return {}
|
||||
EOF
|
||||
for dir in debug script scripts test tests spec _meta; do
|
||||
cat > "$out/lua/require-check-ignores/$dir/failing.lua" <<EOF
|
||||
error("excluded $dir directory was required")
|
||||
EOF
|
||||
done
|
||||
cat > "$out/lua/require-check-ignores/failing_meta.lua" <<'EOF'
|
||||
error("excluded _meta module was required")
|
||||
EOF
|
||||
cat > "$out/lua/require-check-ignores/failing_spec.lua" <<'EOF'
|
||||
error("excluded _spec module was required")
|
||||
EOF
|
||||
cat > "$out/lua/require-check-ignores/failing.spec.lua" <<'EOF'
|
||||
error("excluded .spec module was required")
|
||||
EOF
|
||||
cat > "$out/lua/require-check-ignores/failing.test.lua" <<'EOF'
|
||||
error("excluded .test module was required")
|
||||
EOF
|
||||
cat > "$out/lua/require-check-ignores/meta.lua" <<'EOF'
|
||||
error("excluded meta module was required")
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,17 +4,27 @@ echo "Sourcing neovim-require-check-hook.sh"
|
||||
|
||||
# Discover modules automatically if nvimRequireCheck is not set
|
||||
discover_modules() {
|
||||
echo "Running module discovery in source directory..."
|
||||
echo "Running module discovery in output directory..."
|
||||
|
||||
# Create unique lists so we can organize later
|
||||
modules=()
|
||||
|
||||
while IFS= read -r lua_file; do
|
||||
# Ignore certain infra directories
|
||||
if [[ "$lua_file" =~ (^|/)(debug|script|scripts|test|tests|spec)(/|$) || "$lua_file" =~ .*\meta.lua ]]; then
|
||||
continue
|
||||
# Ignore infrastructure directories and non-runtime module files
|
||||
case "/$lua_file/" in
|
||||
*/debug/* | */script/* | */scripts/* | */test/* | */tests/* | */spec/* | */_meta/*)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${lua_file##*/}" in
|
||||
*meta.lua | *_spec.lua | *.spec.lua | *.test.lua)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
# Ignore optional telescope and lualine modules
|
||||
elif [[ "$lua_file" =~ ^lua/telescope/_extensions/(.+)\.lua || "$lua_file" =~ ^lua/lualine/(.+)\.lua ]]; then
|
||||
if [[ "$lua_file" =~ ^lua/telescope/_extensions/(.+)\.lua || "$lua_file" =~ ^lua/lualine/(.+)\.lua ]]; then
|
||||
continue
|
||||
# Grab main module names
|
||||
elif [[ "$lua_file" =~ ^lua/([^/]+)/init.lua$ ]]; then
|
||||
@@ -30,7 +40,7 @@ discover_modules() {
|
||||
echo "$lua_file"
|
||||
modules+=("${BASH_REMATCH[1]}")
|
||||
fi
|
||||
done < <(find "$src" -name '*.lua' | xargs -n 1 realpath --relative-to="$src")
|
||||
done < <(find "$out" -name '*.lua' -exec realpath --relative-to="$out" {} +)
|
||||
|
||||
nvimRequireCheck=("${modules[@]}")
|
||||
echo "Discovered modules: ${nvimRequireCheck[*]}"
|
||||
|
||||
Reference in New Issue
Block a user