| param( |
| [int]$Port = 7864, |
| [string]$ServerName = "127.0.0.1", |
| [string]$VllmUrl = "https://veronicaulises0--virtual-characters-vllm-gemma-serve.modal.run", |
| [string]$TtsUrl = "https://veronicaulises0--virtual-characters-tts-charactertts-tts.modal.run", |
| [switch]$Mock |
| ) |
|
|
| $ErrorActionPreference = "Continue" |
|
|
| $repoRoot = Split-Path -Parent $PSScriptRoot |
| $logsDir = Join-Path $repoRoot ".logs" |
| New-Item -ItemType Directory -Force -Path $logsDir | Out-Null |
|
|
| $portsToStop = @(7861, 7862, 7863, 7864, 7865, 7867, $Port) | Select-Object -Unique |
| $stopped = @() |
| foreach ($candidatePort in $portsToStop) { |
| $listeners = netstat -ano | Select-String "127\.0\.0\.1:$candidatePort\s+0\.0\.0\.0:0\s+LISTENING" |
| foreach ($line in $listeners) { |
| $parts = ($line.ToString() -split "\s+") | Where-Object { $_ } |
| if ($parts.Length -lt 5) { |
| continue |
| } |
| $targetPid = [int]$parts[-1] |
| Stop-Process -Id $targetPid -Force -ErrorAction SilentlyContinue |
| $stopped += [ordered]@{ port = $candidatePort; pid = $targetPid } |
| } |
| } |
|
|
| $stamp = Get-Date -Format "yyyyMMdd-HHmmss" |
| $stdout = Join-Path $logsDir "gradio-$Port-$stamp.out.log" |
| $stderr = Join-Path $logsDir "gradio-$Port-$stamp.err.log" |
| $runner = Join-Path $PSScriptRoot "run_gradio_server.ps1" |
|
|
| $args = @( |
| "-NoProfile", |
| "-ExecutionPolicy", "Bypass", |
| "-File", $runner, |
| "-Port", "$Port", |
| "-ServerName", $ServerName, |
| "-VllmUrl", $VllmUrl, |
| "-TtsUrl", $TtsUrl, |
| "-Stdout", $stdout, |
| "-Stderr", $stderr |
| ) |
| if ($Mock) { |
| $args += "-Mock" |
| } |
|
|
| $process = Start-Process ` |
| -FilePath "powershell.exe" ` |
| -ArgumentList $args ` |
| -WorkingDirectory $repoRoot ` |
| -WindowStyle Hidden ` |
| -PassThru |
|
|
| [ordered]@{ |
| stopped = $stopped |
| pid = $process.Id |
| url = "http://$ServerName`:$Port" |
| stdout = $stdout |
| stderr = $stderr |
| vllm_url = $VllmUrl |
| tts_url = $TtsUrl |
| mock = [bool]$Mock |
| } | ConvertTo-Json -Depth 5 |
|
|