Skip to content

Commit fefe70b

Browse files
author
ChingTai
committed
Merge branch 'main' into dev
2 parents 6dcb368 + c0c14fd commit fefe70b

File tree

10 files changed

+1458
-599
lines changed

10 files changed

+1458
-599
lines changed

.DS_Store

-8 KB
Binary file not shown.

.github/INSTALL_HOOKS.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/bin/bash
2+
3+
# Install git hooks for LifeContext
4+
# This script sets up pre-commit hooks to run checks before each commit
5+
6+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7+
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
8+
GIT_HOOKS_DIR="$PROJECT_ROOT/.git/hooks"
9+
10+
echo "=========================================="
11+
echo " Installing Git Hooks"
12+
echo "=========================================="
13+
echo ""
14+
15+
# Check if .git directory exists
16+
if [ ! -d "$PROJECT_ROOT/.git" ]; then
17+
echo "❌ Error: Not in a git repository"
18+
echo " Please run this script from the project root"
19+
exit 1
20+
fi
21+
22+
# Create hooks directory if it doesn't exist
23+
mkdir -p "$GIT_HOOKS_DIR"
24+
25+
# Copy pre-commit hook
26+
if [ -f "$SCRIPT_DIR/pre-commit-hook.sh" ]; then
27+
cp "$SCRIPT_DIR/pre-commit-hook.sh" "$GIT_HOOKS_DIR/pre-commit"
28+
chmod +x "$GIT_HOOKS_DIR/pre-commit"
29+
echo "✓ Pre-commit hook installed"
30+
else
31+
echo "✗ pre-commit-hook.sh not found"
32+
exit 1
33+
fi
34+
35+
echo ""
36+
echo "=========================================="
37+
echo "✅ Git hooks installed successfully!"
38+
echo "=========================================="
39+
echo ""
40+
echo "Installed hooks:"
41+
echo " • pre-commit: Runs checks before each commit"
42+
echo ""
43+
echo "To uninstall hooks, run:"
44+
echo " rm -f $GIT_HOOKS_DIR/pre-commit"
45+
echo ""
46+

.github/pre-commit-hook.sh

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/bin/bash
2+
3+
# Pre-commit hook for LifeContext
4+
# Place this file in .git/hooks/pre-commit with execute permissions
5+
# chmod +x .git/hooks/pre-commit
6+
7+
set -e
8+
9+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10+
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
11+
12+
RED='\033[0;31m'
13+
GREEN='\033[0;32m'
14+
YELLOW='\033[1;33m'
15+
BLUE='\033[0;34m'
16+
NC='\033[0m' # No Color
17+
18+
echo -e "${BLUE}========================================${NC}"
19+
echo -e "${BLUE} LifeContext Pre-Commit Checks${NC}"
20+
echo -e "${BLUE}========================================${NC}"
21+
echo ""
22+
23+
# Check which files are staged
24+
STAGED_FILES=$(git diff --cached --name-only)
25+
STAGED_BACKEND=$(echo "$STAGED_FILES" | grep '^backend/' | wc -l)
26+
STAGED_FRONTEND=$(echo "$STAGED_FILES" | grep '^frontend/' | wc -l)
27+
STAGED_EXTENSION=$(echo "$STAGED_FILES" | grep '^Extension/' | wc -l)
28+
29+
# Backend checks
30+
if [ $STAGED_BACKEND -gt 0 ]; then
31+
echo -e "${YELLOW}[1/3] Checking Backend files...${NC}"
32+
33+
# Check Python syntax
34+
cd "$PROJECT_ROOT/backend"
35+
36+
# Get staged Python files
37+
git diff --cached --name-only --diff-filter=d | grep '\.py$' | while read file; do
38+
if [ -f "$file" ]; then
39+
echo -n " Checking $file... "
40+
if python -m py_compile "$file" 2>/dev/null; then
41+
echo -e "${GREEN}${NC}"
42+
else
43+
echo -e "${RED}✗ Syntax Error${NC}"
44+
exit 1
45+
fi
46+
fi
47+
done
48+
49+
cd "$PROJECT_ROOT"
50+
echo ""
51+
fi
52+
53+
# Frontend checks
54+
if [ $STAGED_FRONTEND -gt 0 ]; then
55+
echo -e "${YELLOW}[2/3] Checking Frontend files...${NC}"
56+
57+
cd "$PROJECT_ROOT/frontend"
58+
59+
# Check TypeScript syntax if modified
60+
if git diff --cached --name-only | grep -E '\.(ts|tsx|vue)$' >/dev/null; then
61+
echo -n " Running TypeScript check... "
62+
if npx tsc --noEmit 2>/dev/null; then
63+
echo -e "${GREEN}${NC}"
64+
else
65+
echo -e "${YELLOW}⚠ TypeScript issues (continuing)${NC}"
66+
fi
67+
fi
68+
69+
cd "$PROJECT_ROOT"
70+
echo ""
71+
fi
72+
73+
# Extension checks
74+
if [ $STAGED_EXTENSION -gt 0 ]; then
75+
echo -e "${YELLOW}[3/3] Checking Extension files...${NC}"
76+
77+
cd "$PROJECT_ROOT/Extension"
78+
79+
# Validate manifest.json if modified
80+
if git diff --cached --name-only | grep 'manifest.json' >/dev/null; then
81+
echo -n " Validating manifest.json... "
82+
if node -e "JSON.parse(require('fs').readFileSync('extension/manifest.json', 'utf8'))" 2>/dev/null; then
83+
echo -e "${GREEN}${NC}"
84+
else
85+
echo -e "${RED}✗ Invalid JSON${NC}"
86+
exit 1
87+
fi
88+
fi
89+
90+
cd "$PROJECT_ROOT"
91+
echo ""
92+
fi
93+
94+
echo -e "${GREEN}========================================${NC}"
95+
echo -e "${GREEN}✅ Pre-commit checks passed!${NC}"
96+
echo -e "${GREEN}========================================${NC}"
97+
echo ""
98+

0 commit comments

Comments
 (0)