Establish shellcheck as a mandatory pre-commit quality gate and bring all 93
shell scripts to a clean state.
- tests/shellcheck.sh: wrapper that runs koalaman/shellcheck:stable via Docker
(no native binary needed), skips vendored + upstream librenms-agent scripts.
- .shellcheckrc: documents intentional codebase-wide disables (dynamic source
paths SC1090/SC1091, client-side ssh expansion SC2029).
- AGENTS.md: new Git Policy rule mandating clean shellcheck for every shell
script before commit.
Fixes applied (real bugs + quality): missing quote in netinfra/gather-configs.sh
(caused cascading parse errors), unquoted expansions, declare-and-assign masking,
egrep -> grep -E, $FUNCNAME array indexing, unused variable removal, cd || exit.
Intentional patterns (sourced config, sysfs/ps diagnostics, ssh heredocs that
expand local config) get justified targeted disables.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
18 lines
864 B
Plaintext
18 lines
864 B
Plaintext
# ShellCheck configuration for PFVCluster
|
|
# (used when running `shellcheck` directly; tests/shellcheck.sh applies the
|
|
# same disables via -e for consistent results under Docker)
|
|
#
|
|
# These checks are DISABLED because they flag intentional conventions of this
|
|
# codebase, not bugs:
|
|
#
|
|
# SC1090 / SC1091 — cannot follow dynamically-computed `source` paths. The KNEL
|
|
# framework (vendor/) and test harness source helpers via computed include
|
|
# dirs, which shellcheck cannot resolve statically.
|
|
# SC2029 — ssh orchestration (tests/remote.sh and perf/k8s/dns scripts)
|
|
# deliberately builds and expands the remote command on the CLIENT side before
|
|
# sending it. That is the whole point of the single-chokepoint remote pattern.
|
|
disable=SC1090,SC1091,SC2029
|
|
|
|
# Treat external-sourced files as bash (matches #!/usr/bin/env bash framework).
|
|
external-sources=true
|