feat: 1차 과제 프로젝트 코드 업로드
This commit is contained in:
1 parent
9cee9bf791
commit
9df1bcfc2a
12 files changed
+129
-6
No files matched your search
@@ -0,0 +1,41 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$url = 'http://127.0.0.1:8000/'
|
||||
$serverOutput = Join-Path $env:TEMP 'r2c-viewer-server.log'
|
||||
$serverError = Join-Path $env:TEMP 'r2c-viewer-server-error.log'
|
||||
|
||||
function Test-Viewer {
|
||||
try {
|
||||
$model = Invoke-RestMethod -Uri ($url + 'model.json') -TimeoutSec 10
|
||||
return ($null -ne $model.meshes -and $null -ne $model.variants)
|
||||
} catch { return $false }
|
||||
}
|
||||
|
||||
try {
|
||||
if (-not (Test-Viewer)) {
|
||||
# Explorer exposes WSL folders as either of these UNC paths.
|
||||
if ($PSScriptRoot -match '^\\\\(?:wsl\$|wsl\.localhost)\\([^\\]+)\\(.*)$') {
|
||||
$distro = $Matches[1]
|
||||
$linuxPath = '/' + $Matches[2].Replace('\', '/')
|
||||
$wslArgs = @('-d', $distro, '--cd', ('"' + $linuxPath + '"'), '--', 'python3', 'r2c.py', 'serve')
|
||||
} else {
|
||||
$linuxPath = & wsl.exe -- wslpath -u $PSScriptRoot
|
||||
if ($LASTEXITCODE -ne 0) { throw 'Cannot locate the project in WSL.' }
|
||||
$wslArgs = @('--cd', ('"' + $linuxPath.Trim() + '"'), '--', 'python3', 'r2c.py', 'serve')
|
||||
}
|
||||
$server = Start-Process -FilePath 'wsl.exe' -ArgumentList $wslArgs -PassThru -RedirectStandardOutput $serverOutput -RedirectStandardError $serverError
|
||||
$ready = $false
|
||||
for ($attempt = 0; $attempt -lt 30; $attempt++) {
|
||||
if (Test-Viewer) { $ready = $true; break }
|
||||
if ($server.HasExited) {
|
||||
$details = Get-Content $serverError -Raw -ErrorAction SilentlyContinue
|
||||
throw ('The viewer server exited: ' + $details)
|
||||
}
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
if (-not $ready) { throw 'The viewer did not respond at http://localhost:8000/. Check WSL and port 8000.' }
|
||||
}
|
||||
Start-Process $url
|
||||
} catch {
|
||||
Write-Host $_.Exception.Message -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
Reference in new issue
Block a user