mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-07-31 09:56:46 -04:00
ironfox-oss/IronFox!162 Add a blocking `lint` CI stage (runs first, on a lightweight Alpine image) plus a core.hooksPath pre-commit hook, with scripts/lint.sh as the shared runner for CI, the hook, and manual use. Checks are configured in .shellcheckrc and formatting in .editorconfig. Reformat all scripts with shfmt (2-space indent, switch-case indent, space redirects) via .editorconfig, so a bare `shfmt` is consistent everywhere. bootstrap.sh installs shellcheck + shfmt per-OS and enables the pre-commit hook. The hook is a convenience (bypassable with --no-verify); the CI `lint-scripts` job is the enforcement gate. SC2086/SC2046 are disabled for now as tracked follow-up. MR-author: Akash Yadav <itsaky01@gmail.com> Co-authored-by: Akash Yadav <contact@itsaky.com> Approved-by: celenity <celenity@celenity.dev> Merged-by: celenity <celenity@celenity.dev>
16 lines
536 B
Bash
Executable File
16 lines
536 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# IronFox pre-commit hook: lints staged shell scripts with shellcheck + shfmt.
|
|
#
|
|
# Enabled by pointing git at this directory (done automatically by
|
|
# scripts/bootstrap.sh):
|
|
# git config core.hooksPath scripts/git-hooks
|
|
#
|
|
# This is a convenience only. It can be bypassed with `git commit --no-verify`,
|
|
# and it is not installed on fresh clones until bootstrap runs — so CI (the
|
|
# `lint-scripts` job) remains the real enforcement gate.
|
|
|
|
set -euo pipefail
|
|
|
|
exec "$(git rev-parse --show-toplevel)/scripts/lint.sh" --staged
|