Files
rikkei_simple_care/client/build.ps1
PhuocNTB 385103a0bf
All checks were successful
Deploy on Master Change / deploy (push) Successful in 38s
add bao mat
2026-07-01 14:07:55 +07:00

104 lines
3.8 KiB
PowerShell

# PowerShell script to build Wails client
$ErrorActionPreference = "Stop"
Write-Host "=============================================" -ForegroundColor Cyan
Write-Host " BUILDING SECURE WAILS CLIENT " -ForegroundColor Cyan
Write-Host "=============================================" -ForegroundColor Cyan
# Setup Go path for tools like garble
try {
$goPath = go env GOPATH
if ($goPath) {
$goBin = Join-Path $goPath "bin"
if (Test-Path $goBin) {
if ($env:PATH -notlike "*$goBin*") {
$env:PATH = "$goBin;$env:PATH"
Write-Host "[*] Added $goBin to PATH temporarily" -ForegroundColor Gray
}
}
}
} catch {
Write-Host "[!] Could not resolve GOPATH. Proceeding with default PATH..." -ForegroundColor Yellow
}
# Ensure Garble is installed
$garbleInstalled = $null -ne (Get-Command garble -ErrorAction SilentlyContinue)
if (-not $garbleInstalled) {
Write-Host "[*] Garble is not installed. Installing mvdan.cc/garble@latest..." -ForegroundColor Cyan
try {
go install mvdan.cc/garble@latest
Write-Host "[+] Garble installed successfully!" -ForegroundColor Green
} catch {
Write-Host "[!] Failed to install Garble. Will fall back to standard Go compiler." -ForegroundColor Yellow
}
}
# Check if wails is installed
$wailsInstalled = $null -ne (Get-Command wails -ErrorAction SilentlyContinue)
if ($wailsInstalled) {
Write-Host "[*] Found Wails CLI. Building via Wails with Obfuscation..." -ForegroundColor Green
try {
$garbleInstalled = $null -ne (Get-Command garble -ErrorAction SilentlyContinue)
if ($garbleInstalled) {
Write-Host "[*] Compiling using Garble compiler..." -ForegroundColor Green
wails build -clean -compiler garble -obfuscated -trimpath -m -ldflags "-s -w"
} else {
Write-Host "[!] Garble not available. Compiling with default Go compiler..." -ForegroundColor Yellow
wails build -clean -ldflags "-s -w"
}
Write-Host "[+] Build completed successfully using Wails CLI!" -ForegroundColor Green
exit 0
} catch {
Write-Host "[-] Wails build failed. Attempting manual fallback build..." -ForegroundColor Yellow
}
} else {
Write-Host "[!] Wails CLI not found. Falling back to manual build..." -ForegroundColor Yellow
}
# Check for Go
if ($null -eq (Get-Command go -ErrorAction SilentlyContinue)) {
Write-Host "[!] Go is not installed or not in PATH." -ForegroundColor Red
exit 1
}
# Check for npm
if ($null -eq (Get-Command npm -ErrorAction SilentlyContinue)) {
Write-Host "[!] Node.js/npm is not installed or not in PATH." -ForegroundColor Red
exit 1
}
# Step 1: Build Frontend
Write-Host "[*] Building frontend assets..." -ForegroundColor Cyan
Push-Location frontend
try {
if (-not (Test-Path "node_modules")) {
Write-Host "[*] node_modules not found. Running 'npm install'..." -ForegroundColor Cyan
npm install
}
Write-Host "[*] Running 'npm run build'..." -ForegroundColor Cyan
npm run build
} finally {
Pop-Location
}
# Step 2: Build Backend Go binary
Write-Host "[*] Building Go application..." -ForegroundColor Cyan
try {
$garbleInstalled = $null -ne (Get-Command garble -ErrorAction SilentlyContinue)
if ($garbleInstalled) {
Write-Host "[*] Compiling manual build with Garble..." -ForegroundColor Green
garble build -ldflags="-s -w -H windowsgui" -o client.exe main.go app.go
} else {
Write-Host "[!] Garble not available. Compiling manual build with standard Go..." -ForegroundColor Yellow
go build -ldflags="-s -w -H windowsgui" -o client.exe main.go app.go
}
Write-Host "[+] Build completed successfully! Generated client.exe" -ForegroundColor Green
} catch {
Write-Host "[-] Go build failed." -ForegroundColor Red
exit 1
}