From 8b8dca1fe0331fff72ebd2ab8c578c929d9a501c Mon Sep 17 00:00:00 2001 From: Mikhail Timofeev Date: Wed, 26 May 2021 18:49:20 +0300 Subject: [PATCH 1/2] Switch to use OData query instead of choco search --- images/win/scripts/Installers/Install-Haskell.ps1 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/images/win/scripts/Installers/Install-Haskell.ps1 b/images/win/scripts/Installers/Install-Haskell.ps1 index 558509808ad1..de50f7b7451c 100644 --- a/images/win/scripts/Installers/Install-Haskell.ps1 +++ b/images/win/scripts/Installers/Install-Haskell.ps1 @@ -3,10 +3,13 @@ ## Desc: Install Haskell for Windows ################################################################################ -# Get 3 latest versions of GHC -[Version[]] $ChocoVersionsOutput = & choco search ghc --allversions | Where-Object { $_.StartsWith('ghc ') -and $_ -match 'Approved' } | ForEach-Object { [regex]::matches($_, '\d+(\.\d+){2,}').value } -$MajorMinorGroups = $ChocoVersionsOutput | Sort-Object -Descending | Group-Object { $_.ToString(2) } | Select-Object -First 3 -$VersionsList = $MajorMinorGroups | ForEach-Object { $_.Group | Select-Object -First 1 } | Sort-Object +# Get 3 latest versions of GHC, use OData query for that since choco search has issues https://github.com/chocolatey/choco/issues/2271 +$ODataQuery = '$filter=(Title eq ''ghc'') and (IsPrerelease eq false)&$orderby=Version desc' +$Url = "https://community.chocolatey.org/api/v2/Packages()?$ODataQuery" +$ChocoVersionsOutput = Invoke-RestMethod -Uri $Url | ForEach-Object { [Version]$_.properties.Version } +$GroupedVersions = $ChocoVersionsOutput | Group-Object { $_.ToString(2) } +$LatestMajorMinor = $GroupedVersions | ForEach-Object { [Version]$_.Name } | Sort-Object | Select-Object -last 3 +$VersionsList = $GroupedVersions | Where-Object { $_.Name -in $LatestMajorMinor } | ForEach-Object { $_.Group | Select-Object -First 1 } | Sort-Object # The latest version will be installed as a default ForEach ($version in $VersionsList) From aede2b766c54feadb6fde061bcb6da8db2c40235 Mon Sep 17 00:00:00 2001 From: Mikhail Timofeev Date: Wed, 26 May 2021 19:38:27 +0300 Subject: [PATCH 2/2] Simplify the logic --- images/win/scripts/Installers/Install-Haskell.ps1 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/images/win/scripts/Installers/Install-Haskell.ps1 b/images/win/scripts/Installers/Install-Haskell.ps1 index de50f7b7451c..0e44d0ad8e08 100644 --- a/images/win/scripts/Installers/Install-Haskell.ps1 +++ b/images/win/scripts/Installers/Install-Haskell.ps1 @@ -6,10 +6,9 @@ # Get 3 latest versions of GHC, use OData query for that since choco search has issues https://github.com/chocolatey/choco/issues/2271 $ODataQuery = '$filter=(Title eq ''ghc'') and (IsPrerelease eq false)&$orderby=Version desc' $Url = "https://community.chocolatey.org/api/v2/Packages()?$ODataQuery" -$ChocoVersionsOutput = Invoke-RestMethod -Uri $Url | ForEach-Object { [Version]$_.properties.Version } -$GroupedVersions = $ChocoVersionsOutput | Group-Object { $_.ToString(2) } -$LatestMajorMinor = $GroupedVersions | ForEach-Object { [Version]$_.Name } | Sort-Object | Select-Object -last 3 -$VersionsList = $GroupedVersions | Where-Object { $_.Name -in $LatestMajorMinor } | ForEach-Object { $_.Group | Select-Object -First 1 } | Sort-Object +$ChocoVersionsOutput = [Version[]](Invoke-RestMethod -Uri $Url).properties.Version +$LatestMajorMinor = $ChocoVersionsOutput | Group-Object { $_.ToString(2) } | Sort-Object { [Version]$_.Name } | Select-Object -last 3 +$VersionsList = $LatestMajorMinor | ForEach-Object { $_.Group | Select-Object -First 1 } | Sort-Object # The latest version will be installed as a default ForEach ($version in $VersionsList)