69 lines
2.3 KiB
PowerShell
69 lines
2.3 KiB
PowerShell
param(
|
|
[string]$ModsPath = ""
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$modName = "FS25_Mine"
|
|
$projectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$projectZip = Join-Path $projectRoot "$modName.zip"
|
|
$tempZip = Join-Path ([System.IO.Path]::GetTempPath()) "$modName-build.zip"
|
|
|
|
if ([string]::IsNullOrWhiteSpace($ModsPath)) {
|
|
$candidates = @(
|
|
(Join-Path $env:USERPROFILE "OneDrive\Dokumente\My Games\FarmingSimulator2025\mods"),
|
|
(Join-Path $env:USERPROFILE "Documents\My Games\FarmingSimulator2025\mods")
|
|
)
|
|
|
|
foreach ($candidate in $candidates) {
|
|
if (Test-Path -LiteralPath $candidate) {
|
|
$ModsPath = $candidate
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
if ([string]::IsNullOrWhiteSpace($ModsPath)) {
|
|
throw "Kein FarmingSimulator2025 mods Ordner gefunden. Starte z.B.: .\build.ps1 -ModsPath 'C:\Users\pasca\OneDrive\Dokumente\My Games\FarmingSimulator2025\mods'"
|
|
}
|
|
|
|
if (-not (Test-Path -LiteralPath $ModsPath)) {
|
|
New-Item -ItemType Directory -Force -Path $ModsPath | Out-Null
|
|
}
|
|
|
|
Add-Type -AssemblyName System.IO.Compression
|
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
|
|
|
if (Test-Path -LiteralPath $tempZip) {
|
|
Remove-Item -LiteralPath $tempZip -Force
|
|
}
|
|
|
|
if (Test-Path -LiteralPath $projectZip) {
|
|
Remove-Item -LiteralPath $projectZip -Force
|
|
}
|
|
|
|
$zip = [System.IO.Compression.ZipFile]::Open($tempZip, [System.IO.Compression.ZipArchiveMode]::Create)
|
|
try {
|
|
$files = Get-ChildItem -LiteralPath $projectRoot -Recurse -File -Force | Where-Object {
|
|
$relative = $_.FullName.Substring($projectRoot.Length + 1)
|
|
-not ($relative -like ".git\*") -and
|
|
-not ($relative -like ".vscode\*") -and
|
|
$relative -ne "$modName.zip" -and
|
|
$relative -ne "build.ps1" -and
|
|
$relative -ne "build.cmd"
|
|
}
|
|
|
|
foreach ($file in $files) {
|
|
$relative = $file.FullName.Substring($projectRoot.Length + 1).Replace("\", "/")
|
|
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip, $file.FullName, $relative, [System.IO.Compression.CompressionLevel]::Optimal) | Out-Null
|
|
}
|
|
}
|
|
finally {
|
|
$zip.Dispose()
|
|
}
|
|
|
|
Move-Item -LiteralPath $tempZip -Destination $projectZip -Force
|
|
Copy-Item -LiteralPath $projectZip -Destination (Join-Path $ModsPath "$modName.zip") -Force
|
|
|
|
Write-Host "Build fertig: $projectZip"
|
|
Write-Host "Kopiert nach: $(Join-Path $ModsPath "$modName.zip")" |