# 一键：重建内联 H5 → 拷入移动壳前端 → Tauri 打 Windows 安装包 → 拷到固定下载名
# 用法：改完 mobile-src.html 后，直接跑本脚本即可产出 Windows 移动版安装包。
# 版本号跟随 package.json；产物固定名 CCGUI-mobile-win.exe（落地页下载链接不变）。
$root = $PSScriptRoot

# 1) 重建自包含 H5（mobile-src.html → mobile-test.html）
& "$root\build-mobile-html.ps1"

# 2) 把内联 H5 作为移动壳前端页面
Copy-Item "$root\mobile-test.html" "$root\mobile-shell\web\index.html" -Force

$ver = (Get-Content "$root\package.json" -Raw | ConvertFrom-Json).version

# 2.5) 版本号同步到移动壳工程（tauri.conf.json + Cargo.toml），跟随 package.json
# 注意用无 BOM 的 UTF-8 写回，避免 Cargo/serde_json 解析文件头 BOM 报错
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
$confPath = "$root\mobile-shell\src-tauri\tauri.conf.json"
$conf = [System.IO.File]::ReadAllText($confPath)
$conf = $conf -replace '"version": "[^"]*"', ('"version": "' + $ver + '"')
[System.IO.File]::WriteAllText($confPath, $conf, $utf8NoBom)
$cargoPath = "$root\mobile-shell\src-tauri\Cargo.toml"
$cargo = [System.IO.File]::ReadAllText($cargoPath)
$cargo = $cargo -replace '(?m)^version = "[^"]*"', ('version = "' + $ver + '"')
[System.IO.File]::WriteAllText($cargoPath, $cargo, $utf8NoBom)

Write-Output "内置最新 H5，版本 $ver（已同步到移动壳工程），开始 Tauri 构建（CARGO_BUILD_JOBS=2 规避 360 误杀运行中的 CCGUI）…"

# 3) Tauri 打包（NSIS 安装包）。-j2 限并行，避免满并行触发杀软；
#    复用根目录已装的 tauri CLI（不联网拉取），并共享桌面端 target 复用部分编译缓存。
$env:CARGO_BUILD_JOBS = '2'
$env:CARGO_TARGET_DIR = "$root\src-tauri\target"
Push-Location "$root\mobile-shell"
try {
    & "$root\node_modules\.bin\tauri.cmd" build
    if ($LASTEXITCODE -ne 0) { throw "tauri build 失败（退出码 $LASTEXITCODE）" }
} finally {
    Pop-Location
}

# 4) 拷到固定下载名（落地页链接 /downloads/CCGUI-mobile-win.exe 不变）
#    产物在共享的 CARGO_TARGET_DIR（src-tauri\target）下，非 mobile-shell 自己的 target；
#    统一输出到 out/（gitignore），仓库根不积产物
$setup = Get-ChildItem "$root\src-tauri\target\release\bundle\nsis\*.exe" |
    Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $setup) { throw "未找到 NSIS 产物" }
$out = "$root\out\CCGUI-mobile-win.exe"
New-Item "$root\out" -ItemType Directory -Force | Out-Null
Copy-Item $setup.FullName $out -Force
Write-Output ("安装包: $out (" + [math]::Round((Get-Item $out).Length / 1MB, 2) + " MB)")
