mirror of
https://github.com/alliedmodders/metamod-source.git
synced 2024-11-28 10:24:20 +01:00
136 lines
3.5 KiB
PowerShell
136 lines
3.5 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Downloads dependencies for compiling MetaMod:Source.
|
|
.PARAMETER SDKs
|
|
List of HL2SDK branch names to downloads.
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
param(
|
|
[string[]]$SDKs = @(
|
|
'csgo'
|
|
'hl2dm'
|
|
'nucleardawn'
|
|
'l4d2'
|
|
'dods'
|
|
'l4d'
|
|
'css'
|
|
'tf2'
|
|
'insurgency'
|
|
'sdk2013'
|
|
'dota'
|
|
'orangebox'
|
|
'blade'
|
|
'episode1'
|
|
'bms'
|
|
'darkm'
|
|
'swarm'
|
|
'bgt'
|
|
'eye'
|
|
'contagion'
|
|
'doi'
|
|
'pvkii'
|
|
'mcv'
|
|
)
|
|
)
|
|
|
|
Function Get-Repository
|
|
{
|
|
param(
|
|
[Parameter(Mandatory=$true)][string]$Name,
|
|
[Parameter(Mandatory=$true)][string]$Branch,
|
|
[Parameter(Mandatory=$true)][string]$Repo,
|
|
[string]$Origin
|
|
)
|
|
|
|
If (-not (Test-Path $Name -PathType Container))
|
|
{
|
|
& git clone $Repo -b $Branch $Name 2>&1 | Write-Host
|
|
If ($Origin)
|
|
{
|
|
Set-Location $Name
|
|
& git remote set-url origin $Origin 2>&1 | Write-Host
|
|
Set-Location ..
|
|
}
|
|
}
|
|
Else
|
|
{
|
|
Set-Location $Name
|
|
If ($Origin)
|
|
{
|
|
& git remote set-url origin ..\$Repo 2>&1 | Write-Host
|
|
}
|
|
& git checkout $Branch 2>&1 | Write-Host
|
|
& git pull origin $Branch 2>&1 | Write-Host
|
|
If ($Origin)
|
|
{
|
|
& git remote set-url origin $Origin 2>&1 | Write-Host
|
|
}
|
|
Set-Location ..
|
|
}
|
|
}
|
|
|
|
if (-not (Test-Path "metamod-source" -PathType Container))
|
|
{
|
|
Write-Error "Could not find a MetaMod:Source repository; make sure you aren't running this script inside it."
|
|
Exit 1
|
|
}
|
|
|
|
if (-not (Test-Path "hl2sdk-proxy-repo" -PathType Container))
|
|
{
|
|
& git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo 2>&1 | Write-Host
|
|
}
|
|
else
|
|
{
|
|
Set-Location hl2sdk-proxy-repo
|
|
& git fetch 2>&1 | Write-Host
|
|
Set-Location ..
|
|
}
|
|
|
|
$SDKS | ForEach-Object {
|
|
Get-Repository -Name "hl2sdk-$_" -Branch $_ -Repo "hl2sdk-proxy-repo" "https://github.com/alliedmodders/hl2sdk.git"
|
|
}
|
|
|
|
# Find a suitable installation of Python
|
|
$PYTHON_CMD = Get-Command 'python' -ErrorAction SilentlyContinue
|
|
if ($NULL -eq $PYTHON_CMD)
|
|
{
|
|
$PYTHON_CMD = Get-Command 'python3' -ErrorAction SilentlyContinue
|
|
if ($NULL -eq $PYTHON_CMD)
|
|
{
|
|
$PYTHON_CMD = Get-Command 'py' -ErrorAction SilentlyContinue
|
|
if ($NULL -eq $PYTHON_CMD)
|
|
{
|
|
Write-Error 'No suitable installation of Python detected'
|
|
Exit 1
|
|
}
|
|
}
|
|
}
|
|
|
|
$PYTHON_CMD = $PYTHON_CMD.Source # Convert the result into a string path.
|
|
|
|
& $PYTHON_CMD -c 'import ambuild2' 2>&1 1>$NULL
|
|
if ($LastExitCode -eq 1)
|
|
{
|
|
Write-Host -ForegroundColor Red "AMBuild is required to build MetaMod:Source"
|
|
|
|
# Ensure PIP is installed, otherwise, install it.
|
|
& $PYTHON_CMD -m pip --version 2>&1 1>$NULL # We use PIP's '--version' as it's the least verbose.
|
|
if ($LastExitCode -eq 1) {
|
|
Write-Host -ForegroundColor Red 'The detected Python installation does not have PIP'
|
|
Write-Host 'Installing the latest version of PIP available (VIA "get-pip.py")'
|
|
|
|
$GET_PIP = Join-Path $(Resolve-Path './') 'get-pip.py'
|
|
Invoke-WebRequest -Uri "https://bootstrap.pypa.io/get-pip.py" -OutFile $GET_PIP
|
|
|
|
& $PYTHON_CMD $GET_PIP
|
|
if ($LastExitCode -eq 1) {
|
|
Write-Error 'Installation of PIP has failed'
|
|
Exit 1
|
|
}
|
|
}
|
|
|
|
Get-Repository -Name "ambuild" -Branch "master" -Repo "https://github.com/alliedmodders/ambuild.git"
|
|
& $PYTHON_CMD -m pip install ./ambuild
|
|
}
|