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

91 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# developer perogative ;D
if command -v enablenvm >/dev/null 2>&1; then
enablenvm >/dev/null 2>&1 || true
fi
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
echo -e "${YELLOW}=== RemoteTerm Quality Checks ===${NC}"
echo
# --- Phase 1: Lint & Format ---
echo -e "${YELLOW}=== Phase 1: Lint & Format ===${NC}"
echo -ne "${BLUE}[backend lint]${NC} "
cd "$REPO_ROOT"
uv run ruff check app/ tests/ --fix --quiet
uv run ruff format app/ tests/ --quiet
echo -e "${GREEN}Passed!${NC}"
echo -ne "${BLUE}[frontend lint]${NC} "
cd "$REPO_ROOT/frontend"
npx --quiet eslint src/ --fix --cache --quiet
npx --quiet prettier --write --list-different src/ --log-level warn
echo -e "${GREEN}Passed!${NC}"
echo -e "${GREEN}=== Phase 1 complete ===${NC}"
echo
# --- Phase 2: Typecheck, Tests & Build ---
echo -e "${YELLOW}=== Phase 2: Typecheck, Tests & Build ===${NC}"
echo -ne "${BLUE}[pyright]${NC} "
cd "$REPO_ROOT"
pyright_json="$(mktemp)"
if uv run pyright app/ --outputjson >"$pyright_json"; then
python3 -c "
import json, sys
with open(sys.argv[1]) as f:
d = json.load(f)
s = d.get('summary', {})
print(f\"{s.get('filesAnalyzed', 0)} files, {s.get('errorCount', 0)} errors\")
" "$pyright_json"
else
uv run pyright app/
rm -f "$pyright_json"
exit 1
fi
rm -f "$pyright_json"
echo -e "${GREEN}Passed!${NC}"
echo -ne "${BLUE}[pytest]${NC} "
cd "$REPO_ROOT"
PYTHONPATH=. uv run pytest tests/ -q --no-header --tb=short
echo -e "${GREEN}Passed!${NC}"
echo -ne "${BLUE}[vitest]${NC} "
cd "$REPO_ROOT/frontend"
vitest_log="$(mktemp)"
if npx --quiet vitest run --reporter=dot >"$vitest_log" 2>&1; then
tail -5 "$vitest_log"
else
cat "$vitest_log"
rm -f "$vitest_log"
exit 1
fi
rm -f "$vitest_log"
echo -e "${GREEN}Passed!${NC}"
echo -ne "${BLUE}[build]${NC} "
cd "$REPO_ROOT/frontend"
npx --quiet tsc 2>&1 && npx --quiet vite build --logLevel error 2>&1
echo -e "${GREEN}Passed!${NC}"
echo -e "${GREEN}=== Phase 2 complete ===${NC}"
echo
echo -e "${GREEN}=== All quality checks passed! ===${NC}"