src/private/PackageVersionHelpers.ps1
# Make sure the SWID passed to us has a valid version in the range requested by the user function Test-PackageVersion { [CmdletBinding()] [OutputType([bool])] param ( [Parameter(Mandatory=$true)] [Microsoft.PackageManagement.MetaProvider.PowerShell.SoftwareIdentity] $Package, [Parameter()] [string] $RequiredVersion, [Parameter()] [string] $MinimumVersion, [Parameter()] [string] $MaximumVersion ) $version = $Package.Version.TrimStart('v') if (-not ($RequiredVersion -or $MinimumVersion -or $MaximumVersion)) { return $true } if ($RequiredVersion) { return ($Version -eq $RequiredVersion) } $isMatch = $false if($MinimumVersion) { $isMatch = $version -ge $MinimumVersion } if($MaximumVersion) { if($MinimumVersion) { $isMatch = $isMatch -and ($version -le $MaximumVersion) } else { $isMatch = $version -le $MaximumVersion } } return $isMatch } # Sanity checks on the various version options specified by the user function Confirm-VersionParameters { Param ( [Parameter()] [String[]] $Name, [Parameter()] [String] $MinimumVersion, [Parameter()] [String] $RequiredVersion, [Parameter()] [String] $MaximumVersion, [Parameter()] [Switch] $AllVersions = ($request.Options.ContainsKey($script:AllVersions)) ) if ($AllVersions -and ($RequiredVersion -or $MinimumVersion -or $MaximumVersion)) { ThrowError -ExceptionName "System.ArgumentException" ` -ExceptionMessage $LocalizedData.AllVersionsCannotBeUsedWithOtherVersionParameters ` -ErrorId 'AllVersionsCannotBeUsedWithOtherVersionParameters' ` -ErrorCategory InvalidArgument } elseif ($RequiredVersion -and ($MinimumVersion -or $MaximumVersion)) { ThrowError -ExceptionName "System.ArgumentException" ` -ExceptionMessage $LocalizedData.VersionRangeAndRequiredVersionCannotBeSpecifiedTogether ` -ErrorId "VersionRangeAndRequiredVersionCannotBeSpecifiedTogether" ` -ErrorCategory InvalidArgument } elseif ($MinimumVersion -and $MaximumVersion -and ($MinimumVersion -gt $MaximumVersion)) { ThrowError -ExceptionName "System.ArgumentException" ` -ExceptionMessage ($LocalizedData.MinimumVersionIsGreaterThanMaximumVersion -f ($MinimumVersion, $MaximumVersion)) ` -ErrorId "MinimumVersionIsGreaterThanMaximumVersion" ` -ErrorCategory InvalidArgument } elseif ($AllVersions -or $RequiredVersion -or $MinimumVersion -or $MaximumVersion) { if (-not $Name -or $Name.Count -ne 1 -or (Test-WildcardPattern -Name $Name[0])) { ThrowError -ExceptionName "System.ArgumentException" ` -ExceptionMessage $LocalizedData.VersionParametersAreAllowedOnlyWithSingleName ` -ErrorId "VersionParametersAreAllowedOnlyWithSingleName" ` -ErrorCategory InvalidArgument } } $true } |