chore: fix dev scripts compose output and frontend test command

This commit is contained in:
Marco Allegretti 2026-02-04 00:32:14 +01:00
parent a0d412b5ff
commit a11543a5f9
3 changed files with 122 additions and 122 deletions

View file

@ -29,13 +29,13 @@ function Invoke-Compose {
$podmanCompose = Get-Command podman-compose -ErrorAction SilentlyContinue $podmanCompose = Get-Command podman-compose -ErrorAction SilentlyContinue
if ($podmanCompose) { if ($podmanCompose) {
& podman-compose @Args $null = & podman-compose @Args
return $LASTEXITCODE return $LASTEXITCODE
} }
$podman = Get-Command podman -ErrorAction SilentlyContinue $podman = Get-Command podman -ErrorAction SilentlyContinue
if ($podman) { if ($podman) {
& podman compose @Args $null = & podman compose @Args
return $LASTEXITCODE return $LASTEXITCODE
} }

View file

@ -1,119 +1,119 @@
<# <#
.SYNOPSIS .SYNOPSIS
Stops the Likwid development environment. Stops the Likwid development environment.
.DESCRIPTION .DESCRIPTION
Gracefully stops backend, frontend, and PostgreSQL container. Gracefully stops backend, frontend, and PostgreSQL container.
#> #>
[CmdletBinding()] [CmdletBinding()]
param() param()
$ErrorActionPreference = 'Continue' $ErrorActionPreference = 'Continue'
$root = Split-Path -Parent $PSScriptRoot $root = Split-Path -Parent $PSScriptRoot
$stateDir = Join-Path $PSScriptRoot '.dev' $stateDir = Join-Path $PSScriptRoot '.dev'
$stateFile = Join-Path $stateDir 'state.json' $stateFile = Join-Path $stateDir 'state.json'
$rootPattern = [regex]::Escape($root) $rootPattern = [regex]::Escape($root)
function Invoke-Compose { function Invoke-Compose {
param( param(
[Parameter(Mandatory=$true)][string[]]$Args [Parameter(Mandatory=$true)][string[]]$Args
) )
$podmanCompose = Get-Command podman-compose -ErrorAction SilentlyContinue $podmanCompose = Get-Command podman-compose -ErrorAction SilentlyContinue
if ($podmanCompose) { if ($podmanCompose) {
& podman-compose @Args $null = & podman-compose @Args
return $LASTEXITCODE return $LASTEXITCODE
} }
$podman = Get-Command podman -ErrorAction SilentlyContinue $podman = Get-Command podman -ErrorAction SilentlyContinue
if ($podman) { if ($podman) {
& podman compose @Args $null = & podman compose @Args
return $LASTEXITCODE return $LASTEXITCODE
} }
throw 'Neither podman-compose nor podman was found in PATH.' throw 'Neither podman-compose nor podman was found in PATH.'
} }
function Get-CommandLine { function Get-CommandLine {
param( param(
[Parameter(Mandatory=$true)][int]$ProcessId [Parameter(Mandatory=$true)][int]$ProcessId
) )
try { try {
$p = Get-CimInstance Win32_Process -Filter "ProcessId=$ProcessId" -ErrorAction Stop $p = Get-CimInstance Win32_Process -Filter "ProcessId=$ProcessId" -ErrorAction Stop
return $p.CommandLine return $p.CommandLine
} catch { } catch {
return $null return $null
} }
} }
function Stop-ProcessSafely([int]$ProcessId, [string]$Name) { function Stop-ProcessSafely([int]$ProcessId, [string]$Name) {
if (-not $ProcessId) { return $false } if (-not $ProcessId) { return $false }
$proc = Get-Process -Id $ProcessId -ErrorAction SilentlyContinue $proc = Get-Process -Id $ProcessId -ErrorAction SilentlyContinue
if (-not $proc) { return $false } if (-not $proc) { return $false }
Write-Host "Stopping $Name (PID $ProcessId)..." Write-Host "Stopping $Name (PID $ProcessId)..."
Stop-Process -Id $ProcessId -ErrorAction SilentlyContinue Stop-Process -Id $ProcessId -ErrorAction SilentlyContinue
Start-Sleep -Milliseconds 500 Start-Sleep -Milliseconds 500
# Force kill if still running # Force kill if still running
$proc = Get-Process -Id $ProcessId -ErrorAction SilentlyContinue $proc = Get-Process -Id $ProcessId -ErrorAction SilentlyContinue
if ($proc) { if ($proc) {
Stop-Process -Id $ProcessId -Force -ErrorAction SilentlyContinue Stop-Process -Id $ProcessId -Force -ErrorAction SilentlyContinue
} }
return $true return $true
} }
function Stop-ProcessOnPort([int]$Port) { function Stop-ProcessOnPort([int]$Port) {
$connections = netstat -ano 2>$null | Select-String ":$Port.*LISTENING" $connections = netstat -ano 2>$null | Select-String ":$Port.*LISTENING"
foreach ($conn in $connections) { foreach ($conn in $connections) {
$parts = ($conn.Line -replace '\s+', ' ').Trim().Split(' ') $parts = ($conn.Line -replace '\s+', ' ').Trim().Split(' ')
$procId = [int]$parts[-1] $procId = [int]$parts[-1]
if ($procId -gt 0) { if ($procId -gt 0) {
$cmd = Get-CommandLine -ProcessId $procId $cmd = Get-CommandLine -ProcessId $procId
$looksLikeLikwid = $false $looksLikeLikwid = $false
if ($cmd) { if ($cmd) {
if ($cmd -match $rootPattern) { $looksLikeLikwid = $true } if ($cmd -match $rootPattern) { $looksLikeLikwid = $true }
if ($cmd -match 'npm run dev') { $looksLikeLikwid = $true } if ($cmd -match 'npm run dev') { $looksLikeLikwid = $true }
if ($cmd -match 'astro') { $looksLikeLikwid = $true } if ($cmd -match 'astro') { $looksLikeLikwid = $true }
if ($cmd -match 'cargo') { $looksLikeLikwid = $true } if ($cmd -match 'cargo') { $looksLikeLikwid = $true }
} }
if ($looksLikeLikwid) { if ($looksLikeLikwid) {
Stop-ProcessSafely -ProcessId $procId -Name "process on port $Port" | Out-Null Stop-ProcessSafely -ProcessId $procId -Name "process on port $Port" | Out-Null
} }
} }
} }
} }
Write-Host "=== Stopping Likwid Dev Environment ===" Write-Host "=== Stopping Likwid Dev Environment ==="
# Stop from saved state # Stop from saved state
if (Test-Path $stateFile) { if (Test-Path $stateFile) {
$state = Get-Content -Raw $stateFile | ConvertFrom-Json -ErrorAction SilentlyContinue $state = Get-Content -Raw $stateFile | ConvertFrom-Json -ErrorAction SilentlyContinue
if ($state) { if ($state) {
Stop-ProcessSafely -ProcessId $state.frontendPid -Name 'Frontend' | Out-Null Stop-ProcessSafely -ProcessId $state.frontendPid -Name 'Frontend' | Out-Null
Stop-ProcessSafely -ProcessId $state.backendPid -Name 'Backend' | Out-Null Stop-ProcessSafely -ProcessId $state.backendPid -Name 'Backend' | Out-Null
} }
} }
# Cleanup any orphaned processes on the ports # Cleanup any orphaned processes on the ports
Stop-ProcessOnPort -Port 4321 Stop-ProcessOnPort -Port 4321
Stop-ProcessOnPort -Port 3000 Stop-ProcessOnPort -Port 3000
# Stop PostgreSQL container # Stop PostgreSQL container
Write-Host "Stopping PostgreSQL container..." Write-Host "Stopping PostgreSQL container..."
$composeFile = Join-Path $root 'compose/dev.yml' $composeFile = Join-Path $root 'compose/dev.yml'
try { try {
Invoke-Compose -Args @('-f', $composeFile, 'down') | Out-Null Invoke-Compose -Args @('-f', $composeFile, 'down') | Out-Null
} catch { } catch {
} }
# Clean up state file # Clean up state file
if (Test-Path $stateFile) { if (Test-Path $stateFile) {
Remove-Item -Force $stateFile Remove-Item -Force $stateFile
} }
Write-Host "" Write-Host ""
Write-Host "All services stopped." Write-Host "All services stopped."

View file

@ -39,7 +39,7 @@ if ($Frontend -or $All) {
Write-Host "=== Frontend Tests ===" -ForegroundColor Cyan Write-Host "=== Frontend Tests ===" -ForegroundColor Cyan
Push-Location (Join-Path $root 'frontend') Push-Location (Join-Path $root 'frontend')
try { try {
npm run check 2>&1 | Tee-Object -Variable frontendOutput npm run build 2>&1 | Tee-Object -Variable frontendOutput
$results += @{ Component = 'Frontend'; Success = ($LASTEXITCODE -eq 0) } $results += @{ Component = 'Frontend'; Success = ($LASTEXITCODE -eq 0) }
} finally { } finally {
Pop-Location Pop-Location