mirror of
https://github.com/ZSeven-W/openpencil.git
synced 2026-05-31 19:04:29 +07:00
41 lines
1.1 KiB
Bash
Executable file
41 lines
1.1 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Pre-commit hook: read version from branch name (e.g. v0.5.0)
|
|
# and sync to all package.json files
|
|
#
|
|
|
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
|
|
|
# Extract version from branch name like v0.5.0, v1.2.3, release/v2.0.0
|
|
VERSION=$(echo "$BRANCH" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || true)
|
|
|
|
if [ -n "$VERSION" ]; then
|
|
CHANGED=0
|
|
for f in package.json apps/*/package.json packages/*/package.json; do
|
|
if [ -f "$f" ]; then
|
|
CURRENT=$(jq -r '.version' "$f")
|
|
if [ "$CURRENT" != "$VERSION" ]; then
|
|
jq --arg v "$VERSION" '.version=$v' "$f" > "$f.tmp" && mv "$f.tmp" "$f"
|
|
git add "$f"
|
|
CHANGED=1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ "$CHANGED" = "1" ]; then
|
|
echo "[version-sync] branch $BRANCH → $VERSION"
|
|
fi
|
|
fi
|
|
|
|
# --- Rust format + lint gates (same checks as CI) ---
|
|
echo "[pre-commit] checking Rust format"
|
|
if ! cargo fmt --all -- --check; then
|
|
echo "[pre-commit] Rust format check failed. Run: cargo fmt --all"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[pre-commit] running Rust clippy"
|
|
if ! cargo clippy --workspace --all-targets -- -D warnings; then
|
|
echo "[pre-commit] Rust clippy failed. Fix warnings before committing."
|
|
exit 1
|
|
fi
|