#!/bin/bash set -euo pipefail # saTway Morning Health Check # Quick Phase 0-2 system health assessment # Exit codes: 0=healthy, 1=warning, 2=critical mkdir -p "$HOME/logs" 2>/dev/null || true LOCAL_LOG="$HOME/logs/health-check-$(date +%Y%m%d).log" # ANSI colors RED='\033[0;31m' YELLOW='\033[0;33m' GREEN='\033[0;32m' NC='\033[0m' WORST_STATE=0 echo "--- Morning Health Check $(date) ---" | tee -a "$LOCAL_LOG" # Phase 0: Disk usage echo "[Phase 0] Checking disk usage..." | tee -a "$LOCAL_LOG" DISK_PCT=$(df / | awk 'NR==2 {gsub(/%/, ""); print $5}') echo " Root partition: ${DISK_PCT}% used" | tee -a "$LOCAL_LOG" if [ "$DISK_PCT" -ge 90 ]; then echo -e " ${RED}CRITICAL: Disk at ${DISK_PCT}%${NC}" | tee -a "$LOCAL_LOG" WORST_STATE=2 elif [ "$DISK_PCT" -ge 80 ]; then echo -e " ${YELLOW}WARNING: Disk at ${DISK_PCT}%${NC}" | tee -a "$LOCAL_LOG" [ "$WORST_STATE" -lt 1 ] && WORST_STATE=1 else echo -e " ${GREEN}OK${NC}" | tee -a "$LOCAL_LOG" fi # Phase 1: Git status echo "[Phase 1] Checking workspace git status..." | tee -a "$LOCAL_LOG" WORKSPACE="$HOME/internal/mw-pfeddersheim-workstation" if [ -d "$WORKSPACE/.git" ]; then GIT_DIRTY=$(git -C "$WORKSPACE" status --porcelain || true) if [ -z "$GIT_DIRTY" ]; then echo -e " ${GREEN}Clean${NC}" | tee -a "$LOCAL_LOG" else echo -e " ${YELLOW}Dirty (${#GIT_DIRTY} changes)${NC}" | tee -a "$LOCAL_LOG" echo "$GIT_DIRTY" | head -5 | tee -a "$LOCAL_LOG" [ "$WORST_STATE" -lt 1 ] && WORST_STATE=1 fi else echo " Workspace not found at $WORKSPACE" | tee -a "$LOCAL_LOG" fi # Phase 2: Docker, Uptime & Dependencies echo "[Phase 2] Checking services & dependencies..." | tee -a "$LOCAL_LOG" if command -v docker &> /dev/null; then if docker info &> /dev/null; then RUNNING=$(docker ps --format "{{.Names}}" 2>/dev/null | wc -l) echo -e " ${GREEN}Docker: ${RUNNING} container(s) running${NC}" | tee -a "$LOCAL_LOG" else echo -e " ${YELLOW}Docker: installed but not running${NC}" | tee -a "$LOCAL_LOG" [ "$WORST_STATE" -lt 1 ] && WORST_STATE=1 fi else echo -e " ${YELLOW}Docker: not installed${NC}" | tee -a "$LOCAL_LOG" fi if [ -f "$WORKSPACE/package.json" ]; then if [ ! -d "$WORKSPACE/node_modules" ]; then echo -e " ${RED}CRITICAL: node_modules missing. Run 'npm install' or 'pnpm install'${NC}" | tee -a "$LOCAL_LOG" WORST_STATE=2 else echo -e " ${GREEN}Dependencies: OK (node_modules present)${NC}" | tee -a "$LOCAL_LOG" fi fi echo " Uptime: $(uptime -p)" | tee -a "$LOCAL_LOG" echo "--- Health Check Finished $(date) ---" | tee -a "$LOCAL_LOG" exit "$WORST_STATE"