From 6a3cf95d483bcec26f65f0c4675619a13a87452e Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Thu, 6 Sep 2018 14:29:15 +1000 Subject: [PATCH 01/13] Use PSRL release and filter out previous betas --- PowerShellEditorServices.build.ps1 | 18 ------------------ modules.json | 5 +++++ .../Session/PSReadLinePromptContext.cs | 6 +++++- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/PowerShellEditorServices.build.ps1 b/PowerShellEditorServices.build.ps1 index 4cbfc6f17..bb3ee01ad 100644 --- a/PowerShellEditorServices.build.ps1 +++ b/PowerShellEditorServices.build.ps1 @@ -310,24 +310,6 @@ task RestorePsesModules -After Build { Save-Module @splatParameters } - # TODO: Replace this with adding a new module to Save when a new PSReadLine release comes out to the Gallery - if (-not (Test-Path $PSScriptRoot/module/PSReadLine)) - { - Write-Host "`tInstalling module: PSReadLine" - - # Download AppVeyor zip - $jobId = (Invoke-RestMethod https://ci.appveyor.com/api/projects/lzybkr/PSReadLine).build.jobs[0].jobId - Invoke-RestMethod https://ci.appveyor.com/api/buildjobs/$jobId/artifacts/bin%2FRelease%2FPSReadLine.zip -OutFile $PSScriptRoot/module/PSRL.zip - - # Position PSReadLine - Expand-Archive $PSScriptRoot/module/PSRL.zip $PSScriptRoot/module/PSRL - Move-Item $PSScriptRoot/module/PSRL/PSReadLine $PSScriptRoot/module - - # Clean up - Remove-Item -Force -Recurse $PSScriptRoot/module/PSRL.zip - Remove-Item -Force -Recurse $PSScriptRoot/module/PSRL - } - Write-Host "`n" } diff --git a/modules.json b/modules.json index e4555e5de..621655464 100644 --- a/modules.json +++ b/modules.json @@ -8,5 +8,10 @@ "MinimumVersion":"1.0", "MaximumVersion":"1.99", "AllowPrerelease":false + }, + "PSReadLine":{ + "MinimumVersion":"2.0.0-beta3", + "MaximumVersion":"2.1", + "AllowPrerelease":true } } diff --git a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs index 53aa59121..e02a82348 100644 --- a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs +++ b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs @@ -30,7 +30,11 @@ internal class PSReadLinePromptContext : IPromptContext { [System.Diagnostics.DebuggerStepThrough()] param() end { - $module = Get-Module -ListAvailable PSReadLine | Where-Object Version -ge '2.0.0' | Sort-Object -Descending Version | Select-Object -First 1 + $module = Get-Module -ListAvailable PSReadLine ` + | Where-Object Version -ge '2.0.0' ` + | Where-Object { $psd = Import-PowerShellDataFile $_.Path; $release = $psd.PrivateData.PSData.Prerelease; -not (@('beta1', 'beta2') -contains $release) } ` + | Sort-Object -Descending Version ` + | Select-Object -First 1 if (-not $module) { return } From 1ade35786361cb38090dcb68241fb880b222f805 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Thu, 6 Sep 2018 15:34:05 +1000 Subject: [PATCH 02/13] Use -notin operator --- src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs index e02a82348..297ced81f 100644 --- a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs +++ b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs @@ -32,7 +32,7 @@ internal class PSReadLinePromptContext : IPromptContext { end { $module = Get-Module -ListAvailable PSReadLine ` | Where-Object Version -ge '2.0.0' ` - | Where-Object { $psd = Import-PowerShellDataFile $_.Path; $release = $psd.PrivateData.PSData.Prerelease; -not (@('beta1', 'beta2') -contains $release) } ` + | Where-Object { $psd = Import-PowerShellDataFile $_.Path; $release = $psd.PrivateData.PSData.Prerelease; $release -notin (@('beta1', 'beta2')) } ` | Sort-Object -Descending Version ` | Select-Object -First 1 if (-not $module) { From c9a8d2f646216dc65d1fcf76ab087bcc9fc92da5 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Fri, 7 Sep 2018 11:50:41 +1000 Subject: [PATCH 03/13] Improve module import script style --- .../Session/PSReadLinePromptContext.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs index 297ced81f..030db0729 100644 --- a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs +++ b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs @@ -30,11 +30,11 @@ internal class PSReadLinePromptContext : IPromptContext { [System.Diagnostics.DebuggerStepThrough()] param() end { - $module = Get-Module -ListAvailable PSReadLine ` - | Where-Object Version -ge '2.0.0' ` - | Where-Object { $psd = Import-PowerShellDataFile $_.Path; $release = $psd.PrivateData.PSData.Prerelease; $release -notin (@('beta1', 'beta2')) } ` - | Sort-Object -Descending Version ` - | Select-Object -First 1 + $module = Get-Module -ListAvailable PSReadLine | + Where-Object Version -ge '2.0.0' | + Where-Object { $_.PrivateData.PSData.Prerelease -notin 'beta1','beta2' } | + Sort-Object -Descending Version | + Select-Object -First 1 if (-not $module) { return } From 864c418b57f1ee8eaceb43b838df7b48cc675ee8 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 19:57:39 -0700 Subject: [PATCH 04/13] Use latest NuGet provider --- appveyor.yml | 2 +- scripts/travis.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 24b302c32..5ed10f5b2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,7 +14,7 @@ environment: install: - ps: | - Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force | Out-Null + Install-PackageProvider -Name NuGet -Force | Out-Null Import-PackageProvider NuGet -Force | Out-Null Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force | Out-Null diff --git a/scripts/travis.ps1 b/scripts/travis.ps1 index 5af67b0dd..abe3b1c70 100644 --- a/scripts/travis.ps1 +++ b/scripts/travis.ps1 @@ -1,4 +1,4 @@ - +Install-PackageProvider NuGet -Force # Install InvokeBuild Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force From 3a0b4e8d60c9f2a019a91f233a3e30a0424b7040 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:03:43 -0700 Subject: [PATCH 05/13] Install newer powershellget --- appveyor.yml | 2 ++ scripts/travis.ps1 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 5ed10f5b2..151d0c724 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -16,6 +16,8 @@ install: - ps: | Install-PackageProvider -Name NuGet -Force | Out-Null Import-PackageProvider NuGet -Force | Out-Null + Install-Module -Name PowerShellGet -Force + Import-Module PowerShellGet -Force Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force | Out-Null Install-Module platyPS -RequiredVersion 0.9.0 -Scope CurrentUser -Force | Out-Null diff --git a/scripts/travis.ps1 b/scripts/travis.ps1 index abe3b1c70..be8e965b8 100644 --- a/scripts/travis.ps1 +++ b/scripts/travis.ps1 @@ -1,4 +1,6 @@ Install-PackageProvider NuGet -Force +Install-Module -Name PowerShellGet -Force +Import-Module PowerShellGet -Force # Install InvokeBuild Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force From 3866833753437cb0042c7e9d430fe17af02ec9ba Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:13:59 -0700 Subject: [PATCH 06/13] Fix AllowPrerelease flag --- PowerShellEditorServices.build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PowerShellEditorServices.build.ps1 b/PowerShellEditorServices.build.ps1 index bb3ee01ad..d14410592 100644 --- a/PowerShellEditorServices.build.ps1 +++ b/PowerShellEditorServices.build.ps1 @@ -302,7 +302,7 @@ task RestorePsesModules -After Build { if ($script:SaveModuleSupportsAllowPrerelease) { - $splatParameters += @{ AllowPrerelease = $moduleInstallDetails.AllowPrerelease } + $splatParameters += @{ AllowPrereleaseVersions = $moduleInstallDetails.AllowPrerelease } } Write-Host "`tInstalling module: ${moduleName}" From 56c640a379af55719fa426c7026fdad62d266052 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:20:18 -0700 Subject: [PATCH 07/13] Change parameter name back --- PowerShellEditorServices.build.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PowerShellEditorServices.build.ps1 b/PowerShellEditorServices.build.ps1 index d14410592..bb3ee01ad 100644 --- a/PowerShellEditorServices.build.ps1 +++ b/PowerShellEditorServices.build.ps1 @@ -302,7 +302,7 @@ task RestorePsesModules -After Build { if ($script:SaveModuleSupportsAllowPrerelease) { - $splatParameters += @{ AllowPrereleaseVersions = $moduleInstallDetails.AllowPrerelease } + $splatParameters += @{ AllowPrerelease = $moduleInstallDetails.AllowPrerelease } } Write-Host "`tInstalling module: ${moduleName}" From 7598faa9e31ae6ddf7cad0d63021351d5137d5c8 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:36:56 -0700 Subject: [PATCH 08/13] Try harder to get a better packageget version --- appveyor.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 151d0c724..85eafd6f7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,10 +14,12 @@ environment: install: - ps: | + Install-Module -Name PowershellGet,PackageManagement -force -confirm:$false -verbose + Get-Module PowerShellGet,PackageManagement | Remove-Module -Force -Verbose + Install-Module -Name PowerShellGet -MinimumVersion 1.6 -PassThru -Force + Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -PassThru -Force Install-PackageProvider -Name NuGet -Force | Out-Null Import-PackageProvider NuGet -Force | Out-Null - Install-Module -Name PowerShellGet -Force - Import-Module PowerShellGet -Force Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force | Out-Null Install-Module platyPS -RequiredVersion 0.9.0 -Scope CurrentUser -Force | Out-Null From 4839354b6666367723f6d1e9f885053bdb4dcc54 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:41:42 -0700 Subject: [PATCH 09/13] Put first install module in another process --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 85eafd6f7..2b866d9bc 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,10 +14,10 @@ environment: install: - ps: | - Install-Module -Name PowershellGet,PackageManagement -force -confirm:$false -verbose + powershell -Command { Install-Module -Name PowershellGet,PackageManagement -force -confirm:$false -verbose } Get-Module PowerShellGet,PackageManagement | Remove-Module -Force -Verbose - Install-Module -Name PowerShellGet -MinimumVersion 1.6 -PassThru -Force - Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -PassThru -Force + Install-Module -Name PowerShellGet -MinimumVersion 1.6 -Force + Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force Install-PackageProvider -Name NuGet -Force | Out-Null Import-PackageProvider NuGet -Force | Out-Null Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null From af7fa233374a2f0c7a8f7c2a7c4d65bdadeccc76 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:45:57 -0700 Subject: [PATCH 10/13] Try more thigns --- appveyor.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 2b866d9bc..c863ca18b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,10 +14,11 @@ environment: install: - ps: | - powershell -Command { Install-Module -Name PowershellGet,PackageManagement -force -confirm:$false -verbose } Get-Module PowerShellGet,PackageManagement | Remove-Module -Force -Verbose - Install-Module -Name PowerShellGet -MinimumVersion 1.6 -Force - Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force + powershell -Command { Install-Module -Name PowershellGet -MinimumVersion 1.6 -force -confirm:$false -verbose } + powershell -Command { Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force -Confirm:$false -Verbose } + Import-Module -Name PowerShellGet -MinimumVersion 1.6 -Force + Import-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force Install-PackageProvider -Name NuGet -Force | Out-Null Import-PackageProvider NuGet -Force | Out-Null Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null From d631469027aa2855632ee4e627df9a72ab098f01 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:49:08 -0700 Subject: [PATCH 11/13] Make travis also use the right version of packageget --- scripts/travis.ps1 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/travis.ps1 b/scripts/travis.ps1 index be8e965b8..39f2ec668 100644 --- a/scripts/travis.ps1 +++ b/scripts/travis.ps1 @@ -1,6 +1,11 @@ -Install-PackageProvider NuGet -Force -Install-Module -Name PowerShellGet -Force -Import-Module PowerShellGet -Force +Get-Module PowerShellGet,PackageManagement | Remove-Module -Force -Verbose +powershell -Command { Install-Module -Name PowershellGet -MinimumVersion 1.6 -force -confirm:$false -verbose } +powershell -Command { Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force -Confirm:$false -Verbose } +Import-Module -Name PowerShellGet -MinimumVersion 1.6 -Force +Import-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force +Install-PackageProvider -Name NuGet -Force | Out-Null +Import-PackageProvider NuGet -Force | Out-Null +Set-PSRepository -Name PSGallery -InstallationPolicy Trusted | Out-Null # Install InvokeBuild Install-Module InvokeBuild -MaximumVersion 5.1.0 -Scope CurrentUser -Force From 277713921f5aad6e005d3804ce0d218dd734add4 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Mon, 10 Sep 2018 20:57:05 -0700 Subject: [PATCH 12/13] Make travis installation user-local --- scripts/travis.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/travis.ps1 b/scripts/travis.ps1 index 39f2ec668..51dd4859f 100644 --- a/scripts/travis.ps1 +++ b/scripts/travis.ps1 @@ -1,6 +1,6 @@ Get-Module PowerShellGet,PackageManagement | Remove-Module -Force -Verbose -powershell -Command { Install-Module -Name PowershellGet -MinimumVersion 1.6 -force -confirm:$false -verbose } -powershell -Command { Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force -Confirm:$false -Verbose } +powershell -Command { Install-Module -Name PowershellGet -MinimumVersion 1.6 -Scope CurrentUser -force -confirm:$false -verbose } +powershell -Command { Install-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Scope CurrentUser -Force -Confirm:$false -Verbose } Import-Module -Name PowerShellGet -MinimumVersion 1.6 -Force Import-Module -Name PackageManagement -MinimumVersion 1.1.7.0 -Force Install-PackageProvider -Name NuGet -Force | Out-Null From 1d97cc0530dd67f369176b9f67191b74952f2f82 Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Wed, 12 Sep 2018 15:15:58 -0700 Subject: [PATCH 13/13] Use fully qualified assembly name for PSReadLine loading for PSCore 6.0 --- .../Session/PSReadLinePromptContext.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs index 030db0729..c0707d026 100644 --- a/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs +++ b/src/PowerShellEditorServices/Session/PSReadLinePromptContext.cs @@ -20,7 +20,7 @@ internal class PSReadLinePromptContext : IPromptContext { [System.Diagnostics.DebuggerHidden()] [System.Diagnostics.DebuggerStepThrough()] param() - return [Microsoft.PowerShell.PSConsoleReadLine]::ReadLine( + return [Microsoft.PowerShell.PSConsoleReadLine, Microsoft.PowerShell.PSReadLine2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]::ReadLine( $Host.Runspace, $ExecutionContext, $args[0])"; @@ -31,7 +31,7 @@ internal class PSReadLinePromptContext : IPromptContext { param() end { $module = Get-Module -ListAvailable PSReadLine | - Where-Object Version -ge '2.0.0' | + Where-Object Version -eq '2.0.0' | Where-Object { $_.PrivateData.PSData.Prerelease -notin 'beta1','beta2' } | Sort-Object -Descending Version | Select-Object -First 1 @@ -40,7 +40,7 @@ internal class PSReadLinePromptContext : IPromptContext { } Import-Module -ModuleInfo $module - return 'Microsoft.PowerShell.PSConsoleReadLine' -as [type] + return [Microsoft.PowerShell.PSConsoleReadLine, Microsoft.PowerShell.PSReadLine2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null] }"; private readonly PowerShellContext _powerShellContext;