#!/bin/bash

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Function to run a command and check its status
run_check() {
    local desc=$1
    local cmd=$2

    echo -e "\n${YELLOW}Running: ${desc}${NC}"
    echo -e "${YELLOW}Command: ${cmd}${NC}"

    if eval "$cmd"; then
        echo -e "${GREEN}✓ ${desc} passed${NC}"
        return 0
    else
        echo -e "${RED}✗ ${desc} failed${NC}"
        return 1
    fi
}

# Track if any checks fail
failed=0

echo -e "${YELLOW}🔍 Running all checks for Hikari Desktop...${NC}"

# Frontend checks
run_check "Frontend lint" "pnpm lint" || failed=1
run_check "Frontend format check" "pnpm format:check" || failed=1
run_check "Frontend type check" "pnpm check" || failed=1
run_check "Frontend tests" "pnpm test" || failed=1

# Backend checks
run_check "Backend clippy (strict)" "cd src-tauri && cargo clippy --all-targets --all-features -- -D warnings" || failed=1
run_check "Backend tests" "cargo test" || failed=1

# Summary
echo -e "\n${YELLOW}========================================${NC}"
if [ $failed -eq 0 ]; then
    echo -e "${GREEN}✨ All checks passed! The code is looking great!${NC}"
    echo -e "${GREEN}   Naomi would be so proud of us! 💖${NC}"
    exit 0
else
    echo -e "${RED}❌ Some checks failed. Let's fix them together!${NC}"
    echo -e "${RED}   Don't worry, we'll get through this! 💪${NC}"
    exit 1
fi
