-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprepare-release.ps1
More file actions
141 lines (120 loc) · 7.01 KB
/
prepare-release.ps1
File metadata and controls
141 lines (120 loc) · 7.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/env pwsh
# UnityGameTranslator Release Preparation Script
# Usage: ./prepare-release.ps1
$ErrorActionPreference = "Stop"
# Read version from Directory.Build.props
[xml]$props = Get-Content "Directory.Build.props"
$Version = $props.Project.PropertyGroup.Version
Write-Host "=== UnityGameTranslator Release $Version ===" -ForegroundColor Cyan
# Build UniverseLib first (our fork with custom changes)
Write-Host "`nBuilding UniverseLib..." -ForegroundColor Yellow
$universeLibConfigs = @(
@{ Name = "Mono"; Config = "Release_Mono" }
@{ Name = "IL2CPP-BepInEx"; Config = "Release_IL2CPP_Interop_BIE" }
@{ Name = "IL2CPP-MelonLoader"; Config = "Release_IL2CPP_Interop_ML" }
)
foreach ($ulib in $universeLibConfigs) {
Write-Host " Building UniverseLib $($ulib.Name)..." -ForegroundColor Gray -NoNewline
dotnet build "UniverseLib/src/UniverseLib.sln" -c $ulib.Config --nologo -v q
if ($LASTEXITCODE -ne 0) {
Write-Host " FAILED" -ForegroundColor Red
exit 1
}
Write-Host " OK" -ForegroundColor Green
}
# Update reference DLL for Core compilation
$refSource = "UniverseLib/Release/UniverseLib.Mono/UniverseLib.Mono.dll"
$refDest = "extlibs/UniverseLib/UniverseLib.Mono.dll"
if (Test-Path $refSource) {
Copy-Item $refSource $refDest -Force
Write-Host " Updated extlibs reference DLL" -ForegroundColor DarkGray
}
# Create releases directory
$releasesDir = "releases"
if (Test-Path $releasesDir) {
Remove-Item -Recurse -Force $releasesDir
}
New-Item -ItemType Directory -Path $releasesDir | Out-Null
# Build all projects
Write-Host "`nBuilding projects..." -ForegroundColor Yellow
$projects = @(
@{ Name = "BepInEx5"; Path = "UnityGameTranslator-BepInEx5/UnityGameTranslator.BepInEx5.csproj" },
@{ Name = "BepInEx6-Mono"; Path = "UnityGameTranslator-BepInEx6-Mono/UnityGameTranslator.BepInEx6Mono.csproj" },
@{ Name = "BepInEx6-IL2CPP"; Path = "UnityGameTranslator-BepInEx6-IL2CPP/UnityGameTranslator.BepInEx6IL2CPP.csproj" },
@{ Name = "MelonLoader-Mono"; Path = "UnityGameTranslator-MelonLoader-Mono/UnityGameTranslator.MelonLoaderMono.csproj" },
@{ Name = "MelonLoader-IL2CPP"; Path = "UnityGameTranslator-MelonLoader-IL2CPP/UnityGameTranslator.MelonLoaderIL2CPP.csproj" }
)
foreach ($proj in $projects) {
Write-Host " Building $($proj.Name)..." -ForegroundColor Gray
dotnet build $proj.Path -c Release --nologo -v q
if ($LASTEXITCODE -ne 0) {
Write-Host " FAILED!" -ForegroundColor Red
exit 1
}
}
Write-Host "All builds successful!" -ForegroundColor Green
# NOTE: config.json is NOT included in releases
# The mod creates it on first run with defaults
# This prevents overwriting user settings during updates
# Create zip for each mod loader
Write-Host "`nCreating release zips..." -ForegroundColor Yellow
# BepInEx 5
$bepinex5Dir = "$releasesDir/UnityGameTranslator-BepInEx5-v$Version"
New-Item -ItemType Directory -Path $bepinex5Dir | Out-Null
Copy-Item "UnityGameTranslator-BepInEx5/bin/UnityGameTranslator.dll" $bepinex5Dir
Copy-Item "UnityGameTranslator-BepInEx5/bin/UnityGameTranslator.Core.dll" $bepinex5Dir
Copy-Item "UnityGameTranslator-BepInEx5/bin/Newtonsoft.Json.dll" $bepinex5Dir
# UniverseLib for uGUI
Copy-Item "UniverseLib/Release/NuGet_Mono/lib/net35/UniverseLib.Mono.dll" $bepinex5Dir
Compress-Archive -Path "$bepinex5Dir/*" -DestinationPath "$releasesDir/UnityGameTranslator-BepInEx5-v$Version.zip"
Write-Host " Created UnityGameTranslator-BepInEx5-v$Version.zip" -ForegroundColor Gray
# BepInEx 6 Mono
$bepinex6MonoDir = "$releasesDir/UnityGameTranslator-BepInEx6-Mono-v$Version"
New-Item -ItemType Directory -Path $bepinex6MonoDir | Out-Null
Copy-Item "UnityGameTranslator-BepInEx6-Mono/bin/UnityGameTranslator.dll" $bepinex6MonoDir
Copy-Item "UnityGameTranslator-BepInEx6-Mono/bin/UnityGameTranslator.Core.dll" $bepinex6MonoDir
Copy-Item "UnityGameTranslator-BepInEx6-Mono/bin/Newtonsoft.Json.dll" $bepinex6MonoDir
# UniverseLib for uGUI
Copy-Item "UniverseLib/Release/UniverseLib.Mono/UniverseLib.Mono.dll" $bepinex6MonoDir
Compress-Archive -Path "$bepinex6MonoDir/*" -DestinationPath "$releasesDir/UnityGameTranslator-BepInEx6-Mono-v$Version.zip"
Write-Host " Created UnityGameTranslator-BepInEx6-Mono-v$Version.zip" -ForegroundColor Gray
# BepInEx 6 IL2CPP
$bepinex6IL2CPPDir = "$releasesDir/UnityGameTranslator-BepInEx6-IL2CPP-v$Version"
New-Item -ItemType Directory -Path $bepinex6IL2CPPDir | Out-Null
Copy-Item "UnityGameTranslator-BepInEx6-IL2CPP/bin/UnityGameTranslator.dll" $bepinex6IL2CPPDir
Copy-Item "UnityGameTranslator-BepInEx6-IL2CPP/bin/UnityGameTranslator.Core.dll" $bepinex6IL2CPPDir
Copy-Item "UnityGameTranslator-BepInEx6-IL2CPP/bin/Newtonsoft.Json.dll" $bepinex6IL2CPPDir
# UniverseLib IL2CPP variant for BepInEx
Copy-Item "UniverseLib/Release/NuGet_IL2CPP_Interop/lib/net6.0/UniverseLib.BIE.IL2CPP.Interop.dll" $bepinex6IL2CPPDir
Compress-Archive -Path "$bepinex6IL2CPPDir/*" -DestinationPath "$releasesDir/UnityGameTranslator-BepInEx6-IL2CPP-v$Version.zip"
Write-Host " Created UnityGameTranslator-BepInEx6-IL2CPP-v$Version.zip" -ForegroundColor Gray
# MelonLoader Mono
$melonMonoDir = "$releasesDir/UnityGameTranslator-MelonLoader-Mono-v$Version"
New-Item -ItemType Directory -Path $melonMonoDir | Out-Null
Copy-Item "UnityGameTranslator-MelonLoader-Mono/bin/UnityGameTranslator.dll" $melonMonoDir
Copy-Item "UnityGameTranslator-MelonLoader-Mono/bin/UnityGameTranslator.Core.dll" $melonMonoDir
Copy-Item "UnityGameTranslator-MelonLoader-Mono/bin/Newtonsoft.Json.dll" $melonMonoDir
# UniverseLib Mono variant
Copy-Item "UniverseLib/Release/UniverseLib.Mono/UniverseLib.Mono.dll" $melonMonoDir
Compress-Archive -Path "$melonMonoDir/*" -DestinationPath "$releasesDir/UnityGameTranslator-MelonLoader-Mono-v$Version.zip"
Write-Host " Created UnityGameTranslator-MelonLoader-Mono-v$Version.zip" -ForegroundColor Gray
# MelonLoader IL2CPP
$melonIL2CPPDir = "$releasesDir/UnityGameTranslator-MelonLoader-IL2CPP-v$Version"
New-Item -ItemType Directory -Path $melonIL2CPPDir | Out-Null
Copy-Item "UnityGameTranslator-MelonLoader-IL2CPP/bin/UnityGameTranslator.dll" $melonIL2CPPDir
Copy-Item "UnityGameTranslator-MelonLoader-IL2CPP/bin/UnityGameTranslator.Core.dll" $melonIL2CPPDir
Copy-Item "UnityGameTranslator-MelonLoader-IL2CPP/bin/Newtonsoft.Json.dll" $melonIL2CPPDir
# UniverseLib IL2CPP variant for MelonLoader
Copy-Item "UniverseLib/Release/NuGet_IL2CPP_Interop/lib/net6.0/UniverseLib.ML.IL2CPP.Interop.dll" $melonIL2CPPDir
Compress-Archive -Path "$melonIL2CPPDir/*" -DestinationPath "$releasesDir/UnityGameTranslator-MelonLoader-IL2CPP-v$Version.zip"
Write-Host " Created UnityGameTranslator-MelonLoader-IL2CPP-v$Version.zip" -ForegroundColor Gray
# Cleanup temp directories
Remove-Item -Recurse -Force $bepinex5Dir
Remove-Item -Recurse -Force $bepinex6MonoDir
Remove-Item -Recurse -Force $bepinex6IL2CPPDir
Remove-Item -Recurse -Force $melonMonoDir
Remove-Item -Recurse -Force $melonIL2CPPDir
Write-Host "`n=== Release packages ready in ./releases/ ===" -ForegroundColor Green
Get-ChildItem $releasesDir -Filter "*.zip" | ForEach-Object {
Write-Host " $($_.Name)" -ForegroundColor Cyan
}