d8efc213e3
Four-block pre-push gate matching the HellionChat pattern: - Block A (verify-version-consistency.sh): csproj <Version> vs repo.json AssemblyVersion / TestingAssemblyVersion / DownloadLink* tag presence. Tolerant of repo.json being absent so v0.1.0 (which has no public release manifest yet) does not fail at push time; the missing-file path turns into the full cross-check once repo.json lands. - Block B: dotnet build Anvil.sln -p:Platform=x64 -c Release. Platform pin is forge-wide (Forgeimizer v0.1.0 lesson: solution build defaults drift to AnyCPU otherwise). - Block C: dotnet csharpier check ./Anvil. Catches the accumulated formatter drift that hit HellionChat v1.5.6 (12 files) when only build was checked per task. - Block D: markdownlint-cli2 over the repo's *.md files (excludes node_modules, bin, obj, .claude, CLAUDE.md). Plus setup-hooks.sh as the one-shot installer that points core.hooksPath at .githooks/ and chmods the scripts. README.md: MD040 fix for the custom-repo URL fence (added text language tag).
32 lines
1.3 KiB
Bash
Executable File
32 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# preflight.sh — pre-push gate for the Anvil plugin repository.
|
|
#
|
|
# Block A — version consistency between Anvil.csproj <Version> and the
|
|
# public repo.json manifest (when it exists).
|
|
# Block B — dotnet build -p:Platform=x64 on the solution to catch
|
|
# compile-time API drift.
|
|
# Block C — dotnet csharpier check against Anvil/ for C# format drift
|
|
# (per feedback_hellion_chat_format_check_per_task: accumulated
|
|
# formatter drift in HellionChat v1.5.6 hit 12 files at push
|
|
# time when only build was checked per task).
|
|
# Block D — markdownlint-cli2 against the repo's *.md files.
|
|
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
echo "==> preflight: Block A — version consistency"
|
|
./scripts/verify-version-consistency.sh
|
|
|
|
echo "==> preflight: Block B — plugin compile health"
|
|
dotnet build Anvil.sln -p:Platform=x64 --configuration Release --nologo --verbosity quiet
|
|
|
|
echo "==> preflight: Block C — csharpier reflow check"
|
|
dotnet csharpier check ./Anvil
|
|
|
|
echo "==> preflight: Block D — markdownlint"
|
|
# npx --yes avoids a global install; first run caches into ~/.npm/_npx/.
|
|
npx --yes markdownlint-cli2 "**/*.md" "#node_modules" "#bin" "#obj" "#.claude" "#CLAUDE.md"
|
|
|
|
echo "==> preflight: ALL GREEN"
|