Files
Remote-Terminal-for-MeshCore/scripts/all_quality.sh

104 lines
2.4 KiB
Bash

#!/bin/bash
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
echo -e "${YELLOW}=== RemoteTerm Quality Checks ===${NC}"
echo
# --- Phase 1: Lint + Format (backend ∥ frontend) ---
echo -e "${YELLOW}=== Phase 1: Lint & Format ===${NC}"
(
echo -e "${BLUE}[backend lint]${NC} Running ruff check + format..."
cd "$SCRIPT_DIR"
uv run ruff check app/ tests/ --fix
uv run ruff format app/ tests/
echo -e "${GREEN}[backend lint]${NC} Passed!"
) &
PID_BACKEND_LINT=$!
(
echo -e "${BLUE}[frontend lint]${NC} Running eslint + prettier..."
cd "$SCRIPT_DIR/frontend"
npm run lint:fix
npm run format
echo -e "${GREEN}[frontend lint]${NC} Passed!"
) &
PID_FRONTEND_LINT=$!
(
echo -e "${BLUE}[licenses]${NC} Checking LICENSES.md freshness..."
cd "$SCRIPT_DIR"
TMPLIC=$(mktemp)
trap "rm -f \$TMPLIC" EXIT
bash scripts/collect_licenses.sh "$TMPLIC"
if ! diff -q "$TMPLIC" LICENSES.md > /dev/null 2>&1; then
echo -e "${RED}[licenses]${NC} LICENSES.md is stale — run scripts/collect_licenses.sh"
exit 1
fi
echo -e "${GREEN}[licenses]${NC} Passed!"
) &
PID_LICENSES=$!
FAIL=0
wait $PID_BACKEND_LINT || FAIL=1
wait $PID_FRONTEND_LINT || FAIL=1
wait $PID_LICENSES || FAIL=1
if [ $FAIL -ne 0 ]; then
echo -e "${RED}Phase 1 failed — aborting.${NC}"
exit 1
fi
echo -e "${GREEN}=== Phase 1 complete ===${NC}"
echo
# --- Phase 2: Typecheck + Tests + Build (all parallel) ---
echo -e "${YELLOW}=== Phase 2: Typecheck, Tests & Build ===${NC}"
(
echo -e "${BLUE}[pyright]${NC} Running type check..."
cd "$SCRIPT_DIR"
uv run pyright app/
echo -e "${GREEN}[pyright]${NC} Passed!"
) &
PID_PYRIGHT=$!
(
echo -e "${BLUE}[pytest]${NC} Running backend tests..."
cd "$SCRIPT_DIR"
PYTHONPATH=. uv run pytest tests/ -v
echo -e "${GREEN}[pytest]${NC} Passed!"
) &
PID_PYTEST=$!
(
echo -e "${BLUE}[frontend]${NC} Running tests + build..."
cd "$SCRIPT_DIR/frontend"
npm run test:run
npm run build
echo -e "${GREEN}[frontend]${NC} Passed!"
) &
PID_FRONTEND=$!
FAIL=0
wait $PID_PYRIGHT || FAIL=1
wait $PID_PYTEST || FAIL=1
wait $PID_FRONTEND || FAIL=1
if [ $FAIL -ne 0 ]; then
echo -e "${RED}Phase 2 failed — aborting.${NC}"
exit 1
fi
echo -e "${GREEN}=== Phase 2 complete ===${NC}"
echo
echo -e "${GREEN}=== All quality checks passed! ===${NC}"