config/doctor.ps1

Clear-Host

$separator = "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
Write-Host $separator -ForegroundColor Cyan
Write-Host "🩺 BORG Doctor — System Environment Checkup" -ForegroundColor Cyan
Write-Host $separator -ForegroundColor Cyan
Write-Host ""

function Check-Tool {
    param (
        [string]$ToolName,
        [bool]$IsMandatory = $true
    )

    $exists = Get-Command $ToolName -ErrorAction SilentlyContinue
    if ($exists) {
        Write-Host "✅ $ToolName found" -ForegroundColor Green
        return $true
    }
    else {
        $msg = "❌ $ToolName not found"
        if ($IsMandatory) {
            Write-Host $msg -ForegroundColor Red
        }
        else {
            Write-Host $msg -ForegroundColor DarkYellow
        }
        return $false
    }
}

# 🧠 Check PowerShell version
$pver = $PSVersionTable.PSVersion
$requiredMajor = 7
$requiredMinor = 5

Write-Host "🔍 PowerShell version detected: $pver"
if ($pver.Major -gt $requiredMajor -or ($pver.Major -eq $requiredMajor -and $pver.Minor -ge $requiredMinor)) {
    Write-Host "✅ PowerShell version is compatible (≥ 7.5)" -ForegroundColor Green
}
else {
    Write-Host "❌ PowerShell 7.5 or newer is required. Current: $pver" -ForegroundColor Red
}

Write-Host ""
Write-Host "📦 Mandatory Tools:" -ForegroundColor White
Check-Tool -ToolName "fzf"
Check-Tool -ToolName "sqlcmd"
Check-Tool -ToolName "docker"

# 🔍 Check store.json readability
Write-Host "`n📄 Checking config: store.json"
if (Test-Path $storePath) {
    try {
        $null = Get-Content $storePath -Raw | ConvertFrom-Json
        Write-Host "✅ store.json is present and readable" -ForegroundColor Green
    }
    catch {
        Write-Host "❌ store.json is present but contains invalid JSON" -ForegroundColor Red
    }
}
else {
    Write-Host "❌ store.json is missing from: $storePath" -ForegroundColor Red
}

Write-Host "`n🧰 Optional Tools:" -ForegroundColor White
Check-Tool -ToolName "micro" -IsMandatory:$false

Write-Host "`n$separator" -ForegroundColor Cyan
Write-Host "📋 Doctor check complete. Review above results." -ForegroundColor Cyan
Write-Host $separator -ForegroundColor Cyan