migrate from github

This commit is contained in:
2026-07-15 23:28:04 +08:00
commit eb25aa19d9
17 changed files with 1433 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
#Requires -Version 5.1
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$BasePath = (Resolve-Path "$ScriptDir\..\.." ).Path
$DeployDir = "$BasePath\deploy"
$EnvFile = "$DeployDir\.env"
$EnvExampleFile = "$DeployDir\.env.example"
if (-not (Test-Path $EnvExampleFile)) {
Write-Error "Missing required file: $EnvExampleFile"
exit 1
}
if (-not (Test-Path $EnvFile)) {
Copy-Item $EnvExampleFile $EnvFile
}
# Load key=value pairs from a .env file into a hashtable (last value wins)
function Read-EnvFile([string]$Path) {
$map = @{}
foreach ($line in (Get-Content $Path)) {
if ($line -match '^\s*#' -or $line.Trim() -eq '') { continue }
$idx = $line.IndexOf('=')
if ($idx -lt 1) { continue }
$map[$line.Substring(0, $idx).Trim()] = $line.Substring($idx + 1)
}
return $map
}
# Write or update a single key in the .env file
function Update-EnvKey([string]$Key, [string]$Value) {
$lines = Get-Content $EnvFile
$updated = $false
$result = foreach ($line in $lines) {
if ($line -match "^$Key=") { "$Key=$Value"; $updated = $true }
else { $line }
}
if (-not $updated) { $result += "$Key=$Value" }
$result | Set-Content $EnvFile
}
# Prompt the user for a value, showing the current default in brackets
function Prompt-Value([string]$Key, [string]$Label, [string]$Fallback) {
$current = if ($script:cfg.ContainsKey($Key) -and $script:cfg[$Key] -ne '') {
$script:cfg[$Key]
} else { $Fallback }
$input = Read-Host "$Label [$current]"
if ([string]::IsNullOrEmpty($input)) { $input = $current }
$script:cfg[$Key] = $input
Update-EnvKey $Key $input
}
# Merge example defaults then overlay with actual .env values
$script:cfg = Read-EnvFile $EnvExampleFile
foreach ($kv in (Read-EnvFile $EnvFile).GetEnumerator()) {
$script:cfg[$kv.Key] = $kv.Value
}
Write-Host "== Yoresee Deploy Config Init =="
Write-Host "Press Enter to keep the default value in brackets."
# Host exposed ports
Prompt-Value 'NGINX_HTTP_PORT' 'Host port for Nginx HTTP' '8080'
Prompt-Value 'NGINX_HTTPS_PORT' 'Host port for Nginx HTTPS' '8443'
Prompt-Value 'BACKEND_GRPC_HOST_PORT' 'Host port for backend gRPC' '9090'
Prompt-Value 'BACKEND_DEBUG_HOST_PORT' 'Host port for backend debug (dev only)' '2345'
Prompt-Value 'POSTGRES_HOST_PORT' 'Host port for Postgres (dev only)' '5432'
Prompt-Value 'REDIS_HOST_PORT' 'Host port for Redis (dev only)' '6379'
Prompt-Value 'RABBITMQ_AMQP_HOST_PORT' 'Host port for RabbitMQ AMQP (dev only)' '5672'
Prompt-Value 'CONSUL_HOST_PORT' 'Host port for Consul UI/API' '8500'
Prompt-Value 'ELASTICSEARCH_HOST_PORT' 'Host port for Elasticsearch (dev only)' '9200'
# Credentials and app secrets
Prompt-Value 'POSTGRES_USER' 'Postgres user' 'root'
Prompt-Value 'POSTGRES_PASSWORD' 'Postgres password' 'your_password'
Prompt-Value 'POSTGRES_DB' 'Postgres database' 'yoresee_doc_db'
Prompt-Value 'REDIS_PASSWORD' 'Redis password' 'your_redis_password'
Prompt-Value 'RABBITMQ_DEFAULT_USER' 'RabbitMQ user' 'guest'
Prompt-Value 'RABBITMQ_DEFAULT_PASS' 'RabbitMQ password' 'guest'
Prompt-Value 'MINIO_ROOT_USER' 'MinIO root user' 'minioadmin'
Prompt-Value 'MINIO_ROOT_PASSWORD' 'MinIO root password' 'minioadmin'
Prompt-Value 'CONSUL_ROOT_TOKEN' 'Consul root token' 'yoresee_doc_root_token'
Prompt-Value 'BACKEND_INTERNAL_RPC_KEY' 'Internal RPC key' 'yoresee_doc_internal_key'
Prompt-Value 'JWT_SECRET' 'JWT secret' 'yoresee_doc_jwt_secret_key'
# App behaviour
$defaultApiUrl = "http://localhost:$($script:cfg['NGINX_HTTP_PORT'])"
Prompt-Value 'VITE_API_BASE_URL' 'Frontend API base URL' $defaultApiUrl
Prompt-Value 'VITE_GRPC_WEB_ENDPOINT' 'Frontend gRPC-web endpoint' '/grpc'
Prompt-Value 'DIRTY_DOC_NOTIFY_THRESHOLD' 'Dirty doc notify threshold' '5'
# Derived value — keep MinIO redirect bound to API base URL
$minioRedirect = "$($script:cfg['VITE_API_BASE_URL'].TrimEnd('/'))/minio"
Update-EnvKey 'MINIO_BROWSER_REDIRECT_URL' $minioRedirect
Write-Host "MinIO browser redirect URL (derived): $minioRedirect"
Prompt-Value 'ELASTICSEARCH_ENABLED' 'Enable Elasticsearch' 'true'
Prompt-Value 'ELASTICSEARCH_INDEX_PREFIX' 'Elasticsearch index prefix' 'yoresee_doc'
Prompt-Value 'ELASTICSEARCH_USERNAME' 'Elasticsearch username (optional)' ''
Prompt-Value 'ELASTICSEARCH_PASSWORD' 'Elasticsearch password (optional)' ''
Write-Host "Written: $EnvFile"
& powershell -ExecutionPolicy Bypass -File "$ScriptDir\prepare.ps1"
Write-Host "Initialization completed."
Write-Host "You can start services with: powershell -ExecutionPolicy Bypass -File deploy/script/start.ps1 dev up"