mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 02:54:26 +00:00
`shfmt.ensure()` returned as soon as any `shfmt` was on PATH and tried the distribution package before the release pinned in roles/sys-lint/meta/services.yml. The Debian dev container therefore formats with its packaged 3.8.0 (/usr/bin/shfmt), Fedora with its packaged 3.7.0, the CentOS one with the pinned v3.14.1 (/usr/local/bin/shfmt), and they disagree on scripts/tests/deploy/swarm/utils/unmount/nfs_mounts.sh: every gate in a CentOS stack moved the `then` of the heredoc `if` below the terminator. ensure() now follows ruff's installer: it reads `shfmt --version`, keeps the binary only when it reports the pinned release, and otherwise installs the release binary into /usr/local/bin. It fails when PATH still resolves another version afterwards instead of formatting with it. The system package path is gone. nfs_mounts.sh is committed in the pinned release's format (byte-identical to the v3.14.1 output from the CentOS container), so the first gate on any distro leaves the tree clean. The install-lint stamp now also depends on roles/sys-lint/meta/services.yml, the pin file of actionlint, hadolint and shfmt, so a bumped pin reaches environments whose stamp predates it; until now only pyproject.toml and scripts/install/lint.sh invalidated it. Fixes #1155 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>