Files
computer-playbook/scripts/lint/makefile.sh
kevinveenbirkenbachandClaude Opus 5.5 618a640d4a fix(lint): make mbake format the Makefile the same on every machine
The repository installs mbake unpinned and shipped no .bake.toml, so the
Makefile's final newline depended on the mbake version:

- mbake 1.4.6 (e.g. the pkgmgr venv that wins on a host PATH) defaults
  to ensure_final_newline = false: `mbake format` strips the newline and
  `mbake format --check` accepts the stripped file.
- mbake 1.5.0 (what pip installs today) rejects the same file with
  "Missing final newline", which is what CI reported on PR #1255.

So a local `make autoformat` could strip the newline, the local
lint-makefile stayed green, and CI failed; 6f653ce633 and #1262 had to
restore the newline by hand.

The tracked .bake.toml sets only ensure_final_newline = true, so every
other formatter rule keeps its default. autoformat.sh and makefile.sh
pass it with --config, so the result no longer depends on the version
or on the directory mbake runs from. Checked with both versions: main's
Makefile passes `--check --config .bake.toml`, and a copy without the
final newline fails it with "Missing final newline".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 12:29:08 +01:00

21 lines
588 B
Bash
Executable File

#!/usr/bin/env bash
# shellcheck shell=bash
#
# Lint the project Makefile via mbake (https://github.com/EbodShojaei/bake).
# Reports formatting drift and missing .PHONY declarations against
# referenced rule names. Auto-fix lives in scripts/lint/autoformat.sh.
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." && pwd)"
cd "${REPO_ROOT}"
if ! command -v mbake >/dev/null 2>&1; then
echo "mbake not installed. Run 'make install-lint' first." >&2
exit 127
fi
mbake format --check --config .bake.toml Makefile