From bd85c82dee12235a1f689ae50672cd3c60148f81 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Tue, 12 May 2020 11:39:54 +0100 Subject: [PATCH] Add get latest script which also calls build --- ue4-get-latest.ps1 | 86 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 ue4-get-latest.ps1 diff --git a/ue4-get-latest.ps1 b/ue4-get-latest.ps1 new file mode 100644 index 0000000..c4f1ad0 --- /dev/null +++ b/ue4-get-latest.ps1 @@ -0,0 +1,86 @@ +[CmdletBinding()] # Fail on unknown args +param ( + [string]$src, + [switch]$nocloseeditor = $false, + [switch]$dryrun = $false, + [switch]$help = $false +) + +function Print-Usage { + Write-Output "Steve's UE4 Get Latest Tool" + Write-Output " Get latest from repo and build for dev. Will close UE4 editor!" + Write-Output "Usage:" + Write-Output " ue4-get-latest.ps1 [[-src:]sourcefolder] [Options]" + Write-Output " " + Write-Output " -src : Source folder (current folder if omitted)" + Write-Output " : (should be root of project)" + Write-Output " -nocloseeditor : Don't close UE4 editor (this will prevent DLL cleanup)" + Write-Output " -dryrun : Don't perform any actual actions, just report on what you would do" + Write-Output " -help : Print this help" + Write-Output " " + Write-Output "Environment Variables:" + Write-Output " UE4INSTALL : Use a specific UE4 install." + Write-Output " : Default is to find one based on project version, under UE4ROOT" + Write-Output " UE4ROOT : Parent folder of all binary UE4 installs (detects version). " + Write-Output " : Default C:\Program Files\Epic Games" + Write-Output " " + +} + +$ErrorActionPreference = "Stop" + +if ($help) { + Print-Usage + Exit 0 +} + +$result = 0 + +try { + if ($src -ne ".") { Push-Location $src } + + # Make sure we're running in the root of the project + $uprojfile = Get-ChildItem *.uproject | Select-Object -expand Name + if (-not $uprojfile) { + throw "No Unreal project file found in $(Get-Location)! Aborting." + } + if ($uprojfile -is [array]) { + throw "Multiple Unreal project files found in $(Get-Location)! Aborting." + } + + # Hard coded for Subversion right now + if ($dryrun) { + Write-Output "Checking for updates we WOULD do:" + svn status --show-updates + } else { + Write-Output "Updating to latest..." + svn up + } + + if ($LASTEXITCODE -ne 0) { + throw "Subversion update failed, see above" + } + + # Now build + $args = @() + if ($nocloseeditor) { + $args += "-nocloseeditor" + } + if ($dryrun) { + $args += "-dryrun" + } + # Use Invoke-Expression so we can use a string as options + Invoke-Expression "&'$PSScriptRoot/ue4-build.ps1' dev $args" + + Write-Output "-- Get Latest finished OK --" + + +} catch { + Write-Output "ERROR: $($_.Exception.Message)" + $result = 9 +} finally { + if ($src -ne ".") { Pop-Location } +} + +Exit $result +