优化部署脚本非交互变量支持
This commit is contained in:
@@ -98,6 +98,27 @@ function Run-DeployQuestions {
|
||||
return
|
||||
}
|
||||
|
||||
if ($env:DEPLOY_ACCESS) {
|
||||
$mode = $env:DEPLOY_ACCESS.Trim().ToLowerInvariant()
|
||||
switch ($mode) {
|
||||
{ $_ -in @("local", "localhost", "127.0.0.1") } {
|
||||
$script:DeployIP = "127.0.0.1"
|
||||
Step "Using DEPLOY_ACCESS=$($env:DEPLOY_ACCESS), IP=$($script:DeployIP)"
|
||||
return
|
||||
}
|
||||
{ $_ -in @("lan", "ip") } {
|
||||
Fail "DEPLOY_ACCESS=$($env:DEPLOY_ACCESS) requires DEPLOY_IP, for example: `$env:DEPLOY_IP='192.168.1.10'"
|
||||
}
|
||||
default {
|
||||
Fail "DEPLOY_ACCESS only supports local or lan on Windows, current value: $($env:DEPLOY_ACCESS)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($env:DEPLOY_NON_INTERACTIVE -eq "1" -or $env:CI -eq "true") {
|
||||
Fail "Non-interactive deployment requires DEPLOY_IP or DEPLOY_ACCESS=local."
|
||||
}
|
||||
|
||||
Write-Host "Choose mode:"
|
||||
Write-Host " [1] Local only (127.0.0.1)"
|
||||
Write-Host " [2] LAN access"
|
||||
@@ -277,6 +298,19 @@ function Test-Docker {
|
||||
}
|
||||
|
||||
Warn "Docker Desktop not detected."
|
||||
$installMode = if ($env:DEPLOY_DOCKER_INSTALL) { $env:DEPLOY_DOCKER_INSTALL.Trim().ToLowerInvariant() } else { "" }
|
||||
if (-not [string]::IsNullOrWhiteSpace($installMode)) {
|
||||
switch ($installMode) {
|
||||
{ $_ -in @("manual", "1") } { Start-Process $script:DockerDesktopUrl; Wait-ForExit; exit 1 }
|
||||
{ $_ -in @("auto", "2") } { Install-DockerDesktop }
|
||||
default { Fail "DEPLOY_DOCKER_INSTALL only supports manual or auto, current value: $($env:DEPLOY_DOCKER_INSTALL)" }
|
||||
}
|
||||
}
|
||||
|
||||
if ($env:DEPLOY_NON_INTERACTIVE -eq "1" -or $env:CI -eq "true") {
|
||||
Fail "Docker Desktop not detected. Set DEPLOY_DOCKER_INSTALL=manual or DEPLOY_DOCKER_INSTALL=auto, or install Docker Desktop first."
|
||||
}
|
||||
|
||||
Write-Host "Choose:"
|
||||
Write-Host " [1] Manual install (open URL and exit)"
|
||||
Write-Host " [2] Auto install (winget/choco)"
|
||||
@@ -311,14 +345,21 @@ function Start-Services {
|
||||
function Main {
|
||||
Init-ProjectDir
|
||||
|
||||
if ((Test-Path ".env") -and -not $env:DEPLOY_FORCE_RECONFIG -and -not $env:DEPLOY_IP) {
|
||||
$answer = (Read-Host "Existing .env found. Reconfigure? [y/N]").Trim().ToLower()
|
||||
$yes = ($answer.Length -gt 0) -and ($answer[0] -eq [char]121)
|
||||
if (-not $yes) {
|
||||
if ((Test-Path ".env") -and -not $env:DEPLOY_FORCE_RECONFIG -and -not $env:DEPLOY_IP -and -not $env:DEPLOY_ACCESS) {
|
||||
if ($env:DEPLOY_NON_INTERACTIVE -eq "1" -or $env:CI -eq "true") {
|
||||
$line = Get-Content ".env" -Encoding UTF8 | Where-Object { $_ -like "NUXT_PUBLIC_BASE_APIURL=*" } | Select-Object -First 1
|
||||
if ($line -and $line -like "*:3001*") { $script:DeployIP = ($line -replace ".*http://", "" -replace ":3001.*", "").Trim() }
|
||||
$script:SkipDeployQuestions = $true
|
||||
Step "Using existing env config"
|
||||
} else {
|
||||
$answer = (Read-Host "Existing .env found. Reconfigure? [y/N]").Trim().ToLower()
|
||||
$yes = ($answer.Length -gt 0) -and ($answer[0] -eq [char]121)
|
||||
if (-not $yes) {
|
||||
$line = Get-Content ".env" -Encoding UTF8 | Where-Object { $_ -like "NUXT_PUBLIC_BASE_APIURL=*" } | Select-Object -First 1
|
||||
if ($line -and $line -like "*:3001*") { $script:DeployIP = ($line -replace ".*http://", "" -replace ":3001.*", "").Trim() }
|
||||
$script:SkipDeployQuestions = $true
|
||||
Step "Using existing env config"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user