83 lines
2.0 KiB
Bash
Executable File
83 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Script to install pre-commit hook for webui
|
|
# Pre-commit: formats, checks, builds, and stages build output
|
|
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
PRE_COMMIT_HOOK="$REPO_ROOT/.git/hooks/pre-commit"
|
|
|
|
echo "Installing pre-commit hook for webui..."
|
|
|
|
# Create the pre-commit hook
|
|
cat > "$PRE_COMMIT_HOOK" << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# Check if there are any changes in the webui directory
|
|
if git diff --cached --name-only | grep -q "^tools/server/webui/"; then
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
cd "$REPO_ROOT/tools/server/webui"
|
|
|
|
# Check if package.json exists
|
|
if [ ! -f "package.json" ]; then
|
|
echo "Error: package.json not found in tools/server/webui"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Formatting and checking webui code..."
|
|
|
|
# Run the format command
|
|
npm run format
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: npm run format failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Run the lint command
|
|
npm run lint
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: npm run lint failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Run the check command
|
|
npm run check
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: npm run check failed"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Webui code formatted and checked successfully"
|
|
|
|
# Build the webui
|
|
echo "Building webui..."
|
|
npm run build
|
|
if [ $? -ne 0 ]; then
|
|
echo "❌ npm run build failed"
|
|
exit 1
|
|
fi
|
|
|
|
# Stage the build output alongside the source changes
|
|
cd "$REPO_ROOT"
|
|
git add tools/server/public/
|
|
|
|
echo "✅ Webui built and build output staged"
|
|
fi
|
|
|
|
exit 0
|
|
EOF
|
|
|
|
# Make hook executable
|
|
chmod +x "$PRE_COMMIT_HOOK"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Git hook installed successfully!"
|
|
echo " Pre-commit: $PRE_COMMIT_HOOK"
|
|
echo ""
|
|
echo "The hook will automatically:"
|
|
echo " • Format, lint and check webui code before commits"
|
|
echo " • Build webui and stage tools/server/public/ into the same commit"
|
|
else
|
|
echo "❌ Failed to make hook executable"
|
|
exit 1
|
|
fi
|