From 4c77a05993d40c42ebe78c1d3a72f8049f360982 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sat, 24 Jan 2026 03:56:35 +0800 Subject: Move deployment scripts to scripts/dev directory --- scripts/dev/deploy.ps1 | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 scripts/dev/deploy.ps1 (limited to 'scripts/dev/deploy.ps1') diff --git a/scripts/dev/deploy.ps1 b/scripts/dev/deploy.ps1 new file mode 100644 index 0000000..bc00cad --- /dev/null +++ b/scripts/dev/deploy.ps1 @@ -0,0 +1,78 @@ +# Require : Cargo (Rust), ISCC (Inno Setup) + +# Set location to script directory +$scriptPath = $MyInvocation.MyCommand.Path +$scriptDir = Split-Path $scriptPath -Parent + +# Run script to hide ignored files +$hideScriptPath = Join-Path $scriptDir "hide_ignored_file.ps1" +if (Test-Path $hideScriptPath) { + & $hideScriptPath +} else { + Write-Warning "hide_ignored_file.ps1 not found at $hideScriptPath" +} + +Set-Location (Join-Path $scriptDir "..\..") + +# Check for ISCC +$isccPath = Get-Command ISCC -ErrorAction SilentlyContinue +if (-not $isccPath) { + Write-Warning '"Inno Setup" not installed. (https://jrsoftware.org/isinfo.php)' + exit 1 +} + +# Check if core library exists +$coreLibPath = "..\VersionControl\" +if (-not (Test-Path $coreLibPath)) { + Write-Warning "Core library not found at $coreLibPath. Aborting build." + exit 1 +} + +# Test core library +Write-Host "Testing Core Library `".\..\VersionControl\Cargo.toml`"" +cargo test --manifest-path ..\VersionControl\Cargo.toml --workspace --quiet +if ($LASTEXITCODE -ne 0) { + Write-Warning "Core library tests failed. Aborting build." + exit 1 +} + +# Test workspace +Write-Host "Testing Command Line `".\Cargo.toml`"" +cargo test --workspace --quiet +if ($LASTEXITCODE -ne 0) { + Write-Warning "Workspace tests failed. Aborting build." + exit 1 +} + +# Check if main git worktree is clean +$gitStatus = git status --porcelain +if ($gitStatus) { + Write-Warning "Git worktree is not clean. Commit or stash changes before building." + exit 1 +} + +# Check if core library git worktree is clean +Push-Location $coreLibPath +$coreGitStatus = git status --porcelain +Pop-Location +if ($coreGitStatus) { + Write-Warning "Core library git worktree is not clean. Commit or stash changes before building." + exit 1 +} + +# Build +$env:FORCE_BUILD=$(Get-Date -Format 'mmss') +Write-Host "Building `".\Cargo.toml`"" +cargo build --workspace --release --quiet +if ($LASTEXITCODE -ne 0) { + # Build failed +} else { + # Build succeeded + # Export + Write-Host "Deploying `".\.cargo\config.toml`"" + if (cargo run --manifest-path tools/build_helper/Cargo.toml --quiet --bin exporter release) { + Copy-Item -Path templates\compile_info.rs.template -Destination src\data\compile_info.rs -Force + Write-Host "Packing Installer `".\setup\windows\setup_jv_cli.iss`"" + ISCC /Q .\setup\windows\setup_jv_cli.iss + } +} -- cgit