mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-15 20:20:09 +00:00
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
if [[ "${CCS_SKIP_PREPUSH_GATE:-}" == "1" ]]; then
|
|
echo "[i] Skipping pre-push CI parity gate (CCS_SKIP_PREPUSH_GATE=1)."
|
|
exit 0
|
|
fi
|
|
|
|
if [[ ! -f AGENTS.md ]]; then
|
|
echo "[X] Missing AGENTS.md in this worktree."
|
|
echo " Ensure you are in a valid CCS repository/worktree before pushing."
|
|
exit 1
|
|
fi
|
|
|
|
CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
|
|
if [[ -z "$CURRENT_BRANCH" || "$CURRENT_BRANCH" == "HEAD" ]]; then
|
|
echo "[i] Detached HEAD detected. Skipping pre-push CI parity gate."
|
|
exit 0
|
|
fi
|
|
|
|
BASE_BRANCH="${CCS_PR_BASE:-}"
|
|
if [[ -z "$BASE_BRANCH" ]]; then
|
|
if [[ "$CURRENT_BRANCH" == "main" || "$CURRENT_BRANCH" =~ ^hotfix/ || "$CURRENT_BRANCH" =~ ^kai/hotfix- ]]; then
|
|
BASE_BRANCH="main"
|
|
else
|
|
BASE_BRANCH="dev"
|
|
fi
|
|
fi
|
|
|
|
echo "[i] Pre-push CI parity gate"
|
|
echo " branch: $CURRENT_BRANCH"
|
|
echo " base: $BASE_BRANCH"
|
|
|
|
git fetch origin "$BASE_BRANCH" --quiet || true
|
|
if git show-ref --verify --quiet "refs/remotes/origin/$BASE_BRANCH"; then
|
|
if ! git merge-base --is-ancestor "origin/$BASE_BRANCH" HEAD; then
|
|
echo "[X] Branch '$CURRENT_BRANCH' is behind origin/$BASE_BRANCH."
|
|
echo " Rebase or merge before pushing:"
|
|
echo " git pull --rebase origin $BASE_BRANCH"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "[i] Running CI-equivalent local checks..."
|
|
bun run build:all
|
|
bun run validate
|
|
|
|
echo "[OK] CI parity gate passed."
|