private/Get-PeclLibraryZip.ps1
function Get-PeclLibraryZip { <# .SYNOPSIS Get the Visual Studio version. .PARAMETER Library Library Name .PARAMETER PhpVersion PHP Version .PARAMETER VsVersion Visual Studio version .PARAMETER Arch Architecture .PARAMETER ExtensionSeries Extension Series #> [OutputType()] param ( [Parameter(Mandatory = $true, Position=0, HelpMessage='PHP Version')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $Library, [Parameter(Mandatory = $true, Position=1, HelpMessage='PHP Version')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $PhpVersion, [Parameter(Mandatory = $true, Position=2, HelpMessage='Visual Studio version')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $VsVersion, [Parameter(Mandatory = $true, Position=3, HelpMessage='Architecture')] [ValidateNotNull()] [ValidateLength(1, [int]::MaxValue)] [string] $Arch, [Parameter(Mandatory = $true, Position=4, HelpMessage='Extension Series')] [ValidateNotNull()] [PSCustomObject] $ExtensionSeries ) begin { } process { $olderVs = Get-OlderVsVersion -PhpVersion $PhpVersion foreach($vs in ((@($olderVs) + @($VsVersion)) | Sort-Object -Descending)) { $lib_name, $lib_version = ($Library -split '-')[0, 1] $key = $lib_name.toLower() + "-?([0-9].*)-$vs-$Arch\.zip" $options = @() $ExtensionSeries.Links | ForEach-Object { if($_.HREF.toLower() -match $key) { $link_matches = $matches if($null -eq $lib_version -or $matches[1] -match ('^' + $lib_version + '.*')) { if($link_matches[1].Contains('.')) { $suffix="" } else { $suffix=".0" } $versionParts = $link_matches[1] -split '-' if($null -ne $versionParts[1] -and $versionParts[1].Contains('.')) { $versionParts[0] = $versionParts[0] + $versionParts[1].Replace('.', '') } $options += @{ name = ($_.HREF -split ('/') | Select-Object -Last 1) version = ($versionParts[0] + $suffix) } } } } if($options.Count -gt 0) { $latest = $options | Sort-Object -Property { [version] $_.version } -Descending | Select-Object -First 1 return $latest.name } } } end { } } |