From 38ee921ef7a873d79ccc0ffd0df9ec46d05e9d45 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Mon, 5 Oct 2020 17:21:33 +0100 Subject: [PATCH] Don't use PsIni to update DefauleGame.ini, it screws up with nested arrays. Do it manually --- inc/projectversion.ps1 | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/inc/projectversion.ps1 b/inc/projectversion.ps1 index defc63c..5330a90 100644 --- a/inc/projectversion.ps1 +++ b/inc/projectversion.ps1 @@ -86,9 +86,25 @@ function Increment-Project-Version { if ($dryrun) { Write-Verbose "[version++] dryrun: not changing $gameIniFile" } else { - $gameIni["/Script/EngineSettings.GeneralProjectSettings"].ProjectVersion = $newver - Out-IniFile -Force -InputObject $gameIni -FilePath $gameIniFile - Write-Verbose "[version++] Success! Version is now $newver" + # We don't use PsIni to write, because it can screw up some nested non-trivial properties :( + #$gameIni["/Script/EngineSettings.GeneralProjectSettings"].ProjectVersion = $newver + #Out-IniFile -Force -InputObject $gameIni -FilePath $gameIniFile + + $verlineregex = "ProjectVersion=$regex" + $matches = Select-String -Path "$gameIniFile" -Pattern $verlineregex + + if ($matches.Matches.Count -gt 0) { + $origline = $matches.Matches[0].Value + $newline = "ProjectVersion=$newver" + + (Get-Content "$gameIniFile").replace($origline, $newline) | Set-Content "$gameIniFile" + Write-Verbose "[version++] Success! Version is now $newver" + + } else { + throw "[version++] Error: unable to substitute current version, unable to find '$verlineregex'" + } + + } return "$newver"