104 lines
2.9 KiB
PowerShell
104 lines
2.9 KiB
PowerShell
param(
|
|
[ValidateSet("Release", "Debug")]
|
|
[string]$Configuration = "Release",
|
|
[string]$Runtime = "win-x64",
|
|
[switch]$SkipSidecar,
|
|
[switch]$SkipWeb,
|
|
[switch]$SkipWebGateway,
|
|
[switch]$SkipTauri,
|
|
[switch]$DryRun
|
|
)
|
|
|
|
$commonScript = Join-Path $PSScriptRoot "script-common.ps1"
|
|
if (-not (Test-Path $commonScript)) {
|
|
throw "Missing helper script: $commonScript"
|
|
}
|
|
. $commonScript
|
|
|
|
$repoRoot = Resolve-JournalRepoRoot -StartPath $PSScriptRoot
|
|
$appRoot = Resolve-JournalAppRoot -RepoRoot $repoRoot
|
|
$outputRoot = Join-Path $repoRoot "output"
|
|
|
|
$publishSidecar = Join-Path $PSScriptRoot "publish-sidecar.ps1"
|
|
$publishApp = Join-Path $PSScriptRoot "publish-app.ps1"
|
|
$publishGateway = Join-Path $PSScriptRoot "publish-webgateway.ps1"
|
|
|
|
Write-Host "Publishing all outputs to: $outputRoot" -ForegroundColor Cyan
|
|
Write-Host "Configuration: $Configuration Runtime: $Runtime" -ForegroundColor DarkGray
|
|
|
|
if (-not (Test-Path $outputRoot)) {
|
|
New-Item -ItemType Directory -Force -Path $outputRoot | Out-Null
|
|
}
|
|
|
|
function Invoke-Step {
|
|
param(
|
|
[string]$Label,
|
|
[string]$ScriptPath,
|
|
[string[]]$Args
|
|
)
|
|
|
|
Write-Host "`n> $Label" -ForegroundColor Cyan
|
|
Write-Host " $ScriptPath $($Args -join ' ')" -ForegroundColor DarkGray
|
|
if (-not $DryRun) {
|
|
& $ScriptPath @Args
|
|
}
|
|
}
|
|
|
|
if (-not $SkipSidecar) {
|
|
Invoke-Step "Publish Sidecar" $publishSidecar @(
|
|
"-Configuration", $Configuration,
|
|
"-Runtime", $Runtime
|
|
)
|
|
}
|
|
else {
|
|
Write-Host "Skipping sidecar publish." -ForegroundColor DarkGray
|
|
}
|
|
|
|
if (-not $SkipWeb) {
|
|
Invoke-Step "Build Web UI" $publishApp @(
|
|
"-Target", "web",
|
|
"-Configuration", $Configuration
|
|
)
|
|
}
|
|
else {
|
|
Write-Host "Skipping web build." -ForegroundColor DarkGray
|
|
}
|
|
|
|
if (-not $SkipWebGateway) {
|
|
Invoke-Step "Publish WebGateway" $publishGateway @(
|
|
"-Configuration", $Configuration,
|
|
"-Runtime", $Runtime
|
|
)
|
|
}
|
|
else {
|
|
Write-Host "Skipping WebGateway publish." -ForegroundColor DarkGray
|
|
}
|
|
|
|
if (-not $SkipTauri) {
|
|
Invoke-Step "Build Tauri Desktop App" $publishApp @(
|
|
"-Target", "tauri",
|
|
"-Configuration", $Configuration,
|
|
"-TauriBundles", "none"
|
|
)
|
|
|
|
$targetConfigDir = if ($Configuration -eq "Debug") { "debug" } else { "release" }
|
|
$tauriExePath = Join-Path $appRoot "src-tauri\\target\\$targetConfigDir\\journalapp.exe"
|
|
$stagedExePath = Join-Path $outputRoot "journalapp.exe"
|
|
|
|
if (Test-Path $tauriExePath) {
|
|
if ($DryRun) {
|
|
Write-Host "Would copy: $tauriExePath -> $stagedExePath" -ForegroundColor Yellow
|
|
}
|
|
else {
|
|
Copy-Item -Force $tauriExePath $stagedExePath
|
|
Write-Host "Staged desktop exe: $stagedExePath" -ForegroundColor Green
|
|
}
|
|
}
|
|
else {
|
|
Write-Warning "Tauri exe not found at $tauriExePath"
|
|
}
|
|
}
|
|
else {
|
|
Write-Host "Skipping Tauri build." -ForegroundColor DarkGray
|
|
}
|