# build a release zip: everything a friend needs to install the modloader # # powershell -ExecutionPolicy Bypass -File scripts\package-release.ps1 # powershell -ExecutionPolicy Bypass -File scripts\package-release.ps1 -Version 0.1.1 # # The zip is a subset of the repo: no sources of the reverse engineering # tooling, no build scratch, just the installer and the artifacts it installs. param( [string]$Version = '0.1.0' ) $ErrorActionPreference = 'Stop' $Repo = Split-Path -Parent $PSScriptRoot function Say($message, $color) { if ($color) { Write-Host $message -ForegroundColor $color } else { Write-Host $message } } $name = "rsx-modloader-$Version" $stage = Join-Path $Repo "build\$name" $zip = Join-Path $Repo "dist\$name.zip" Say 'Собираю артефакты...' & (Join-Path $PSScriptRoot 'build.ps1') if ($LASTEXITCODE -ne 0) { Say ' сборка не удалась.' Red exit 1 } Say '' Say 'Собираю пакет...' Remove-Item $stage -Recurse -Force -ErrorAction SilentlyContinue Remove-Item $zip -Force -ErrorAction SilentlyContinue New-Item -ItemType Directory -Force -Path $stage | Out-Null # the entrypoints a friend actually clicks foreach ($file in 'install.cmd', 'uninstall.cmd', 'start-launcher.cmd', 'build.cmd') { $src = Join-Path $Repo $file if (Test-Path $src) { Copy-Item $src (Join-Path $stage $file) -Force } } foreach ($dir in 'dist', 'profiles') { $src = Join-Path $Repo $dir if (Test-Path $src) { Copy-Item $src (Join-Path $stage $dir) -Recurse -Force } } foreach ($file in 'README.md', 'LICENSE', 'AUTHORS.md') { $src = Join-Path $Repo $file if (Test-Path $src) { Copy-Item $src (Join-Path $stage $file) -Force } } # the .cmd entrypoints call scripts\*.ps1, so keep that layout inside the zip New-Item -ItemType Directory -Force -Path (Join-Path $stage 'scripts') | Out-Null Copy-Item (Join-Path $PSScriptRoot 'install.ps1') (Join-Path $stage 'scripts\install.ps1') -Force Copy-Item (Join-Path $PSScriptRoot 'start-launcher.ps1') (Join-Path $stage 'scripts\start-launcher.ps1') -Force # build scratch must never end up in a release Get-ChildItem $stage -Recurse -Include '*.new', '*.orig', '*.class' -File | ForEach-Object { Remove-Item $_.FullName -Force -ErrorAction SilentlyContinue } Say '' Say 'Жму zip...' Add-Type -AssemblyName System.IO.Compression.FileSystem [System.IO.Compression.ZipFile]::CreateFromDirectory( $stage, $zip, [System.IO.Compression.CompressionLevel]::Optimal, $false) $size = [math]::Round((Get-Item $zip).Length / 1MB, 2) Say '' Say "Готово: dist\$name.zip ($size МБ)" Green Say '' Say 'В архиве:' Get-ChildItem $stage | ForEach-Object { Say " $($_.Name)" }