diff --git a/.vscode/settings.json b/.vscode/settings.json index 6cd0251..38e51d7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,8 +7,8 @@ "path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe", "args": [ "-NoExit", - "-File", - "G:\\Shared drives\\OS-VAUCO-DRIVE\\OSVauco\\scripts\\osv-startup.ps1" + "-Command", + "Unblock-File 'G:\\Shared drives\\OS-VAUCO-DRIVE\\OSVauco\\scripts\\osv-startup.ps1'; & 'G:\\Shared drives\\OS-VAUCO-DRIVE\\OSVauco\\scripts\\osv-startup.ps1'" ] } }, diff --git a/scripts/osv-startup.ps1 b/scripts/osv-startup.ps1 index 81aa360..99897e9 100644 --- a/scripts/osv-startup.ps1 +++ b/scripts/osv-startup.ps1 @@ -1,5 +1,4 @@ # OSVauco · OPAX — VS Code Windows Startup -# settings.json: "args": ["-NoExit","-File","G:\\Shared drives\\OS-VAUCO-DRIVE\\OSVauco\\scripts\\osv-startup.ps1"] $REPO = "G:\Shared drives\OS-VAUCO-DRIVE\OSVauco" $PING = "https://opax.vauco.no/ping" @@ -11,7 +10,6 @@ Set-Location $REPO Clear-Host # ---- GCLOUD PATH DETECTION ----------------------------------- -# Finn gcloud uavhengig av om den er i PATH $gcloudCmd = $null $gcloudPaths = @( "gcloud", @@ -20,18 +18,14 @@ $gcloudPaths = @( "$env:USERPROFILE\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd" ) foreach ($p in $gcloudPaths) { - try { - $null = & $p version 2>$null - if ($LASTEXITCODE -eq 0 -or $?) { $gcloudCmd = $p; break } - } catch {} + try { $null = & $p version 2>$null; if ($LASTEXITCODE -eq 0 -or $?) { $gcloudCmd = $p; break } } catch {} } -# ---- SJEKKER (stille) ---------------------------------------- +# ---- SJEKKER ------------------------------------------------- $gcOK = $false; $adcOK = $false; $opaxOK = $false; $gitOK = $false $gcAcc = ""; $gcNotInstalled = ($null -eq $gcloudCmd) -$gitOut = git pull 2>&1 -$gitOK = ($LASTEXITCODE -eq 0) +$gitOut = git pull 2>&1; $gitOK = ($LASTEXITCODE -eq 0) if (-not $gcNotInstalled) { try { @@ -42,29 +36,27 @@ if (-not $gcNotInstalled) { & $gcloudCmd config set compute/region us-central1 2>$null | Out-Null } } catch {} - try { - $t = & $gcloudCmd auth application-default print-access-token 2>$null - if ($t) { $adcOK = $true } - } catch {} + try { $t = & $gcloudCmd auth application-default print-access-token 2>$null; if ($t) { $adcOK = $true } } catch {} } -try { - if ((Invoke-RestMethod -Uri $PING -TimeoutSec 5).status -eq 'ok') { $opaxOK = $true } -} catch {} +try { if ((Invoke-RestMethod -Uri $PING -TimeoutSec 5).status -eq 'ok') { $opaxOK = $true } } catch {} $allOK = $gitOK -and $opaxOK -and $gcOK +# ---- FARGER (kun lilla + grønn) ------------------------------ +$PU = 'Magenta' # lilla +$GR = 'Green' # grønn +$DG = 'DarkGreen' # mørkgrønn (for kontrast) + # ---- STATUS STRENGER ----------------------------------------- -$gitTxt = if ($gitOK) { if ($gitOut -match 'Already') { "✅ Git : up to date" } else { "✅ Git : oppdatert" } } - else { "❌ Git : FEIL" } -$gcTxt = if ($gcNotInstalled) { "ℹ GCP : gcloud ikke funnet — bruk Cloud Shell" } - elseif ($gcOK) { "✅ GCP : " + ($gcAcc -replace '@vauco.no','') } - else { "⚠ GCP : ikke logget inn — gcloud auth login" } -$adcTxt = if ($gcNotInstalled) { "ℹ ADC : ikke tilgjengelig i dette miljøet" } - elseif ($adcOK) { "✅ ADC : OK" } - else { "⚠ ADC : gcloud auth application-default login" } -$opaxTxt = if ($opaxOK) { "✅ OPAX : opax.vauco.no" } - else { "❌ OPAX : nede — sjekk Cloud Run" } +$gitTxt = if ($gitOK) { if ($gitOut -match 'Already') { "✅ Git : up to date" } else { "✅ Git : oppdatert" } } else { "❌ Git : FEIL" } +$gcTxt = if ($gcNotInstalled) { "ℹ GCP : ikke funnet — bruk Cloud Shell" } + elseif ($gcOK) { "✅ GCP : " + ($gcAcc -replace '@vauco.no','') } + else { "⚠ GCP : gcloud auth login" } +$adcTxt = if ($gcNotInstalled) { "ℹ ADC : ikke tilgjengelig" } + elseif ($adcOK) { "✅ ADC : OK" } + else { "⚠ ADC : gcloud auth application-default login" } +$opaxTxt = if ($opaxOK) { "✅ OPAX : opax.vauco.no" } else { "❌ OPAX : nede — sjekk Cloud Run" } # ---- HJELPEFUNKSJONER ---------------------------------------- function Pad($text, $width) { @@ -74,21 +66,15 @@ function Pad($text, $width) { function GlowBox($lines) { $seg = [math]::Floor($W / 3); $r = $W - $seg * 2 - Write-Host " " -NoNewline - Write-Host ("█" * $seg) -NoNewline -ForegroundColor Magenta - Write-Host ("█" * $seg) -NoNewline -ForegroundColor DarkGreen - Write-Host ("█" * $r) -ForegroundColor Green + Write-Host " " -NoNewline; Write-Host ("█" * $seg) -NoNewline -ForegroundColor $PU + Write-Host ("█" * $seg) -NoNewline -ForegroundColor $DG; Write-Host ("█" * $r) -ForegroundColor $GR foreach ($line in $lines) { $inner = Pad $line ($W - 4) - Write-Host " " -NoNewline - Write-Host "█" -NoNewline -ForegroundColor Magenta - Write-Host (" $inner ") -NoNewline -ForegroundColor Green - Write-Host "█" -ForegroundColor Green + Write-Host " " -NoNewline; Write-Host "█" -NoNewline -ForegroundColor $PU + Write-Host (" $inner ") -NoNewline -ForegroundColor $GR; Write-Host "█" -ForegroundColor $GR } - Write-Host " " -NoNewline - Write-Host ("█" * $r) -NoNewline -ForegroundColor Green - Write-Host ("█" * $seg) -NoNewline -ForegroundColor DarkGreen - Write-Host ("█" * $seg) -ForegroundColor Magenta + Write-Host " " -NoNewline; Write-Host ("█" * $r) -NoNewline -ForegroundColor $GR + Write-Host ("█" * $seg) -NoNewline -ForegroundColor $DG; Write-Host ("█" * $seg) -ForegroundColor $PU } function DocBox($line) { @@ -96,43 +82,33 @@ function DocBox($line) { if ($line -match '^([0-9a-f]{7}) (\d{4}-\d{2}-\d{2}) (.+)$') { $hash = $matches[1]; $date = $matches[2]; $msg = $matches[3] } - Write-Host " " -NoNewline - Write-Host "┌─ " -NoNewline -ForegroundColor DarkGreen - Write-Host $hash -NoNewline -ForegroundColor Green - Write-Host " $date" -ForegroundColor DarkGreen - $msgPad = Pad $msg ($W - 4) - Write-Host " " -NoNewline - Write-Host "│ " -NoNewline -ForegroundColor DarkGreen - Write-Host $msgPad -ForegroundColor Green - Write-Host " " -NoNewline - Write-Host "└" -NoNewline -ForegroundColor DarkGreen - Write-Host ("─" * ($W - 2)) -ForegroundColor DarkGreen + Write-Host " " -NoNewline; Write-Host "┌─ " -NoNewline -ForegroundColor $PU + Write-Host $hash -NoNewline -ForegroundColor $GR; Write-Host " $date" -ForegroundColor $DG + Write-Host " " -NoNewline; Write-Host "│ " -NoNewline -ForegroundColor $PU + Write-Host (Pad $msg ($W - 4)) -ForegroundColor $GR + Write-Host " " -NoNewline; Write-Host "└" -NoNewline -ForegroundColor $PU + Write-Host ("─" * ($W - 2)) -ForegroundColor $PU +} + +function NesteBox($text) { + Write-Host " " -NoNewline; Write-Host "┌" -NoNewline -ForegroundColor $PU; Write-Host ("─" * ($W - 2)) -ForegroundColor $PU + Write-Host " " -NoNewline; Write-Host "│ " -NoNewline -ForegroundColor $PU + Write-Host (Pad $text ($W - 4)) -ForegroundColor $GR + Write-Host " " -NoNewline; Write-Host "└" -NoNewline -ForegroundColor $PU; Write-Host ("─" * ($W - 2)) -ForegroundColor $PU } function StatusLine($text) { - $col = if ($text -match "^✅") { 'Green' } elseif ($text -match "^❌") { 'Red' } elseif ($text -match "^⚠") { 'Yellow' } else { 'Cyan' } - $glyph = if ($text -match "^✅") { "▓" } elseif ($text -match "^❌") { "░" } else { "▒" } - Write-Host " $glyph " -NoNewline -ForegroundColor $col + $col = if ($text -match "^✅") { $GR } elseif ($text -match "^❌") { 'Red' } else { $PU } + Write-Host " " -NoNewline; Write-Host "▒ " -NoNewline -ForegroundColor $col Write-Host $text -ForegroundColor $col } -# ============================================================== -# TOPP BOKS # ============================================================== Write-Host "" -GlowBox @( - "", - " O S V A U C O · O P A X", - " us-central1 · gemini-2.5-pro", - " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')", - "" -) +GlowBox @("", " O S V A U C O · O P A X", " us-central1 · gemini-2.5-pro", " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')", "") Write-Host "" -# ============================================================== -# NESTE OPPGAVE -# ============================================================== -Write-Host " ■ NESTE OPPGAVE" -ForegroundColor Magenta +Write-Host " ■ NESTE OPPGAVE" -ForegroundColor $PU $nesteLines = @("Sjekk docs/VAUCO_OS_ROADMAP.md") if (Test-Path $LOG) { $m = [regex]::Match((Get-Content $LOG -Raw -Encoding UTF8), '(?s)## NESTE OPPGAVE\r?\n(.*?)(?=\r?\n## |$)') @@ -142,54 +118,28 @@ if (Test-Path $LOG) { Select-Object -First 3 | ForEach-Object { $_.Trim() } } } -foreach ($nl in $nesteLines) { - Write-Host " " -NoNewline - Write-Host "┌" -NoNewline -ForegroundColor Magenta - Write-Host ("─" * ($W - 2)) -ForegroundColor Magenta - Write-Host " " -NoNewline - Write-Host "│ " -NoNewline -ForegroundColor Magenta - Write-Host (Pad $nl ($W - 4)) -ForegroundColor Green - Write-Host " " -NoNewline - Write-Host "└" -NoNewline -ForegroundColor Magenta - Write-Host ("─" * ($W - 2)) -ForegroundColor Magenta -} +foreach ($nl in $nesteLines) { NesteBox $nl } Write-Host "" -# ============================================================== -# SISTE DOCS -# ============================================================== -Write-Host " ■ SISTE DOCS" -ForegroundColor Magenta +Write-Host " ■ SISTE DOCS" -ForegroundColor $PU $docLines = git -C $REPO log -3 --pretty=format:"%h %cd %s" --date=short -- docs 2>&1 | - ForEach-Object { ($_ -replace '[^\x00-\x7F\u00e6\u00f8\u00e5\u00c6\u00d8\u00c5\u2014\u2013]+', '').Trim() } | - Where-Object { $_ } + ForEach-Object { ($_ -replace '[^\x00-\x7F\u00e6\u00f8\u00e5\u00c6\u00d8\u00c5\u2014\u2013]+', '').Trim() } | Where-Object { $_ } foreach ($dl in $docLines) { DocBox $dl } Write-Host "" -# ============================================================== -# STATUS -# ============================================================== -Write-Host " ■ STATUS" -ForegroundColor Magenta -StatusLine $gitTxt -StatusLine $gcTxt -StatusLine $adcTxt -StatusLine $opaxTxt +Write-Host " ■ STATUS" -ForegroundColor $PU +StatusLine $gitTxt; StatusLine $gcTxt; StatusLine $adcTxt; StatusLine $opaxTxt Write-Host "" -# ============================================================== -# BUNN BOKS -# ============================================================== if ($allOK) { GlowBox @("", " ▶▶ ALL SYSTEMS GREEN ◀◀", "") } else { - Write-Host " " -NoNewline; Write-Host ("█" * $W) -ForegroundColor Yellow - Write-Host " █ ⚠ PARTIAL — sjekk status over" -ForegroundColor Yellow - Write-Host " " -NoNewline; Write-Host ("█" * $W) -ForegroundColor Yellow + Write-Host " " -NoNewline; Write-Host ("█" * $W) -ForegroundColor $PU + Write-Host " █ ⚠ PARTIAL — sjekk status over" -ForegroundColor $PU + Write-Host " " -NoNewline; Write-Host ("█" * $W) -ForegroundColor $PU } Write-Host "" -# ============================================================== -# CUSTOM PROMPT -# ============================================================== function prompt { Write-Host " G:\Shared-drives\" -NoNewline -ForegroundColor Magenta Write-Host "OS" -NoNewline -ForegroundColor White