235 lines
6.4 KiB
PowerShell
235 lines
6.4 KiB
PowerShell
function FindMSBuild
|
|
{
|
|
$msBuildVersions = @("4.0")
|
|
foreach ($msBuildVersion in $msBuildVersions)
|
|
{
|
|
$key = "HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\{0}" -f $msBuildVersion
|
|
$property = Get-ItemProperty $key -ErrorAction SilentlyContinue
|
|
if ($property -eq $null -or $property.MSBuildToolsPath -eq $null)
|
|
{
|
|
continue
|
|
}
|
|
$path = Join-Path $property.MSBuildToolsPath -ChildPath "MSBuild.exe"
|
|
if (Test-Path $path)
|
|
{
|
|
return $path
|
|
}
|
|
}
|
|
return $null
|
|
}
|
|
|
|
function UtilityNotFound
|
|
{
|
|
echo "OpenRA.Utility.exe could not be found. Build the project first using the `"all`" command."
|
|
}
|
|
|
|
if ($args.Length -eq 0)
|
|
{
|
|
echo "Command list:"
|
|
echo ""
|
|
echo " all Builds the game and its development tools."
|
|
echo " dependencies Copies the game's dependencies into the main game folder."
|
|
echo " version Sets the version strings for the default mods to the latest"
|
|
echo " version for the current Git branch."
|
|
echo " clean Removes all built and copied files. Use the 'all' and"
|
|
echo " 'dependencies' commands to restore removed files."
|
|
echo " test Tests the default mods for errors."
|
|
echo " check Checks .cs files for StyleCop violations."
|
|
echo " check-scripts Checks .lua files for syntax errors."
|
|
echo " docs Generates the trait and Lua API documentation."
|
|
echo ""
|
|
$command = (Read-Host "Enter command").Split(' ', 2)
|
|
}
|
|
else
|
|
{
|
|
$command = $args
|
|
}
|
|
|
|
if ($command -eq "all")
|
|
{
|
|
$msBuild = FindMSBuild
|
|
$msBuildArguments = "/t:Rebuild /nr:false"
|
|
if ($msBuild -eq $null)
|
|
{
|
|
echo "Unable to locate an appropriate version of MSBuild."
|
|
}
|
|
else
|
|
{
|
|
$proc = Start-Process $msBuild $msBuildArguments -NoNewWindow -PassThru -Wait
|
|
if ($proc.ExitCode -ne 0)
|
|
{
|
|
echo "Build failed. If just the development tools failed to build, try installing Visual Studio. You may also still be able to run the game."
|
|
}
|
|
else
|
|
{
|
|
echo "Build succeeded."
|
|
}
|
|
}
|
|
}
|
|
elseif ($command -eq "clean")
|
|
{
|
|
$msBuild = FindMSBuild
|
|
$msBuildArguments = "/t:Clean /nr:false"
|
|
if ($msBuild -eq $null)
|
|
{
|
|
echo "Unable to locate an appropriate version of MSBuild."
|
|
}
|
|
else
|
|
{
|
|
$proc = Start-Process $msBuild $msBuildArguments -NoNewWindow -PassThru -Wait
|
|
rm *.dll
|
|
rm *.dll.config
|
|
rm mods/*/*.dll
|
|
if (Test-Path thirdparty/download/)
|
|
{
|
|
rmdir thirdparty/download -Recurse -Force
|
|
}
|
|
echo "Clean complete."
|
|
}
|
|
}
|
|
elseif ($command -eq "version")
|
|
{
|
|
if ($command.Length -gt 1)
|
|
{
|
|
$version = $command[1]
|
|
}
|
|
elseif (Get-Command 'git' -ErrorAction SilentlyContinue)
|
|
{
|
|
$version = git name-rev --name-only --tags --no-undefined HEAD 2>$null
|
|
if ($version -eq $null)
|
|
{
|
|
$version = "git-" + (git rev-parse --short HEAD)
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo "Unable to locate Git. The version will remain unchanged."
|
|
}
|
|
|
|
if ($version -ne $null)
|
|
{
|
|
$mods = @("mods/ra/mod.yaml", "mods/cnc/mod.yaml", "mods/d2k/mod.yaml", "mods/ts/mod.yaml", "mods/modchooser/mod.yaml", "mods/all/mod.yaml")
|
|
foreach ($mod in $mods)
|
|
{
|
|
$replacement = (gc $mod) -Replace "Version:.*", ("Version: {0}" -f $version)
|
|
sc $mod $replacement
|
|
$replacement = (gc $mod) -Replace "modchooser:.*", ("modchooser: {0}" -f $version)
|
|
sc $mod $replacement
|
|
}
|
|
echo ("Version strings set to '{0}'." -f $version)
|
|
}
|
|
}
|
|
elseif ($command -eq "dependencies")
|
|
{
|
|
cd thirdparty
|
|
./fetch-thirdparty-deps.ps1
|
|
cp download/*.dll ..
|
|
cp download/GeoLite2-Country.mmdb.gz ..
|
|
cp download/windows/*.dll ..
|
|
cd ..
|
|
echo "Dependencies copied."
|
|
}
|
|
elseif ($command -eq "test")
|
|
{
|
|
if (Test-Path OpenRA.Utility.exe)
|
|
{
|
|
echo "Testing mods..."
|
|
echo "Testing Tiberian Sun mod MiniYAML..."
|
|
./OpenRA.Utility.exe ts --check-yaml
|
|
echo "Testing Dune 2000 mod MiniYAML..."
|
|
./OpenRA.Utility.exe d2k --check-yaml
|
|
echo "Testing Tiberian Dawn mod MiniYAML..."
|
|
./OpenRA.Utility.exe cnc --check-yaml
|
|
echo "Testing Red Alert mod MiniYAML..."
|
|
./OpenRA.Utility.exe ra --check-yaml
|
|
}
|
|
else
|
|
{
|
|
UtilityNotFound
|
|
}
|
|
}
|
|
elseif ($command -eq "check")
|
|
{
|
|
if (Test-Path OpenRA.Utility.exe)
|
|
{
|
|
echo "Checking for code style violations in OpenRA.Platforms.Default..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Platforms.Default
|
|
echo "Checking for code style violations in OpenRA.Platforms.Null..."
|
|
./OpenRA.Utility.exe ra --check-code-style OpenRA.Platforms.Null
|
|
echo "Checking for code style violations in OpenRA.GameMonitor..."
|
|
./OpenRA.Utility.exe ra --check-code-style OpenRA.GameMonitor
|
|
echo "Checking for code style violations in OpenRA.Game..."
|
|
./OpenRA.Utility.exe ra --check-code-style OpenRA.Game
|
|
echo "Checking for code style violations in OpenRA.Mods.Common..."
|
|
./OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.Common
|
|
echo "Checking for code style violations in OpenRA.Mods.RA..."
|
|
./OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA
|
|
echo "Checking for code style violations in OpenRA.Mods.Cnc..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.Cnc
|
|
echo "Checking for code style violations in OpenRA.Mods.D2k..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k
|
|
echo "Checking for code style violations in OpenRA.Mods.TS..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS
|
|
echo "Checking for code style violations in OpenRA.Utility..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility
|
|
echo "Checking for code style violations in OpenRA.Test..."
|
|
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Test
|
|
echo "Checking for explicit interface violations..."
|
|
./OpenRA.Utility.exe all --check-explicit-interfaces
|
|
}
|
|
else
|
|
{
|
|
UtilityNotFound
|
|
}
|
|
}
|
|
elseif ($command -eq "check-scripts")
|
|
{
|
|
if ((Get-Command "luac.exe" -ErrorAction SilentlyContinue) -ne $null)
|
|
{
|
|
echo "Testing Lua scripts..."
|
|
foreach ($script in ls "mods/*/maps/*/*.lua")
|
|
{
|
|
luac -p $script
|
|
}
|
|
foreach ($script in ls "lua/*.lua")
|
|
{
|
|
luac -p $script
|
|
}
|
|
echo "Check completed!"
|
|
}
|
|
else
|
|
{
|
|
echo "luac.exe could not be found. Please install Lua."
|
|
}
|
|
}
|
|
elseif ($command -eq "docs")
|
|
{
|
|
if (Test-Path OpenRA.Utility.exe)
|
|
{
|
|
./make.ps1 version
|
|
./OpenRA.Utility.exe all --docs | Out-File -Encoding "UTF8" DOCUMENTATION.md
|
|
./OpenRA.Utility.exe all --lua-docs | Out-File -Encoding "UTF8" Lua-API.md
|
|
}
|
|
else
|
|
{
|
|
UtilityNotFound
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo ("Invalid command '{0}'" -f $command)
|
|
}
|
|
|
|
if ($args.Length -eq 0)
|
|
{
|
|
echo "Press enter to continue."
|
|
while ($true)
|
|
{
|
|
if ([System.Console]::KeyAvailable)
|
|
{
|
|
break
|
|
}
|
|
Start-Sleep -Milliseconds 50
|
|
}
|
|
}
|