public/Invoke-PhpBuildExtension.ps1
function Invoke-PhpBuildExtension { <# .SYNOPSIS Build PHP Extension .PARAMETER ExtensionUrl Extension URL .PARAMETER ExtensionRef Extension Reference .PARAMETER PhpVersion PHP Version .PARAMETER Arch Architecture .PARAMETER Ts Thread Safety .PARAMETER Libraries Libraries required by the extension #> [OutputType()] param ( [Parameter(Mandatory = $false, Position=0, HelpMessage='Extension URL')] [string] $ExtensionUrl = '', [Parameter(Mandatory = $false, Position=1, HelpMessage='Extension Reference')] [string] $ExtensionRef = '', [Parameter(Mandatory = $true, Position=2, HelpMessage='PHP Version')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $PhpVersion, [Parameter(Mandatory = $true, Position=3, HelpMessage='PHP Architecture')] [ValidateNotNull()] [ValidateSet('x86', 'x64')] [string] $Arch, [Parameter(Mandatory = $true, Position=4, HelpMessage='PHP Build Type')] [ValidateNotNull()] [ValidateSet('nts', 'ts')] [string] $Ts ) begin { } process { Set-StrictMode -Off Set-NetSecurityProtocolType $VsData = (Get-VsVersion -PhpVersion $PhpVersion) if($null -eq $VsData.vs) { throw "PHP version $PhpVersion is not supported." } $currentDirectory = (Get-Location).Path $buildDirectory = Get-BuildDirectory Set-Location "$buildDirectory" $source = Get-ExtensionSource -ExtensionUrl $ExtensionUrl -ExtensionRef $ExtensionRef $extension = Get-Extension -ExtensionUrl $source.url -ExtensionRef $source.ref $config = Add-BuildRequirements -Extension $extension ` -ExtensionRef $source.ref ` -PhpVersion $PhpVersion ` -Arch $Arch ` -Ts $Ts ` -VsVersion $VsData.vs ` -VsToolset $VsData.toolset Invoke-Build -Config $config if($env:RUN_TESTS -eq 'true') { Invoke-Tests -Config $config } Add-Package -Config $config Set-Location $currentDirectory Move-Item -Path "$buildDirectory\artifacts" -Destination "$currentDirectory" -Force } end { } } |