Skip to content

Commit 79ffb78

Browse files
committed
chore: add ci-aligned pre-push checks
1 parent 25f46b5 commit 79ffb78

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

.husky/pre-push

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env sh
2+
3+
npm run prepush:check

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"dev:micro-services-emails-fetcher": "npm run dev --prefix ./micro-services/emails-fetcher",
2222
"prettier:fix": "npm run prettier:fix --prefix ./backend && npm run prettier:fix --prefix ./frontend && npm run prettier:fix --prefix ./micro-services/emails-fetcher",
2323
"prepare": "husky",
24-
"precommit:check": "lint-staged"
24+
"precommit:check": "lint-staged",
25+
"prepush:check": "bash ./scripts/prepush-ci-check.sh"
2526
},
2627
"author": "ankaboot",
2728
"license": "AGPL-3.0",

scripts/prepush-ci-check.sh

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
ROOT_DIR="$(git rev-parse --show-toplevel)"
6+
cd "$ROOT_DIR"
7+
8+
BASE_REF="origin/main"
9+
10+
if ! git rev-parse --verify --quiet "$BASE_REF" >/dev/null; then
11+
echo "[pre-push] Skipping checks: $BASE_REF not found. Run: git fetch origin main"
12+
exit 0
13+
fi
14+
15+
MERGE_BASE="$(git merge-base HEAD "$BASE_REF")"
16+
CHANGED_FILES="$(git diff --name-only "$MERGE_BASE"...HEAD)"
17+
18+
if [ -z "$CHANGED_FILES" ]; then
19+
echo "[pre-push] No changes detected against $BASE_REF."
20+
exit 0
21+
fi
22+
23+
RUN_BACKEND=0
24+
RUN_FRONTEND=0
25+
26+
while IFS= read -r file; do
27+
case "$file" in
28+
backend/*)
29+
RUN_BACKEND=1
30+
;;
31+
frontend/*)
32+
RUN_FRONTEND=1
33+
;;
34+
esac
35+
done <<< "$CHANGED_FILES"
36+
37+
if [ "$RUN_BACKEND" -eq 0 ] && [ "$RUN_FRONTEND" -eq 0 ]; then
38+
echo "[pre-push] No backend/frontend changes detected."
39+
exit 0
40+
fi
41+
42+
echo "[pre-push] Running CI-aligned checks..."
43+
44+
if [ "$RUN_BACKEND" -eq 1 ]; then
45+
echo "[pre-push] backend: test-ci:unit"
46+
npm run test-ci:unit --prefix ./backend
47+
echo "[pre-push] backend: lint"
48+
npm run lint --prefix ./backend
49+
echo "[pre-push] backend: prettier"
50+
npm run prettier --prefix ./backend
51+
fi
52+
53+
if [ "$RUN_FRONTEND" -eq 1 ]; then
54+
echo "[pre-push] frontend: lint"
55+
npm run lint --prefix ./frontend
56+
echo "[pre-push] frontend: prettier"
57+
npm run prettier --prefix ./frontend
58+
fi
59+
60+
echo "[pre-push] All checks passed."

0 commit comments

Comments
 (0)