<# .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 }