Skip to content

Attempt to import latest PowerShellGet version #20

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -210,73 +210,6 @@ function Register-AzureArtifactsPSRepository
Write-Information "The installed version '$installedVersion' of the NuGet Package Provider on computer '$computerName' satisfies the minimum required version of '$minimumRequiredVersion'."
return $true
}

function Install-AndImportPowerShellGet([string] $scope)
{
[string] $computerName = $Env:ComputerName
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

[System.Version] $minimumRequiredPowerShellGetVersion = '2.2.1'
$latestPowerShellGetVersionInstalled =
Get-Module -Name 'PowerShellGet' -ListAvailable |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object -Descending |
Select-Object -First 1

[bool] $minimumPowerShellGetVersionIsNotInstalled = ($latestPowerShellGetVersionInstalled -lt $minimumRequiredPowerShellGetVersion)
if ($minimumPowerShellGetVersionIsNotInstalled)
{
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Information "Installing latest PowerShellGet version for user '$currentUser' to scope '$scope' on computer '$computerName'."
Install-Module -Name PowerShellGet -Repository PSGallery -Scope $scope -Force -AllowClobber
}
else
{
Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'."
}

Import-PowerShellGetModule -minimumRequiredPowerShellGetVersion $minimumRequiredPowerShellGetVersion
}

function Import-PowerShellGetModule([System.Version] $minimumRequiredPowerShellGetVersion)
{
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion

[bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion)
if ($powerShellGetIsNotAlreadyImported)
{
Import-Module -Name PowerShellGet -MinimumVersion $minimumRequiredPowerShellGetVersion -Global -Force
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
}
Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion'."

[bool] $powerShellGetVersionImportedIsHighEnough = ($currentlyImportedVersion -ge $minimumRequiredPowerShellGetVersion)
if ($powerShellGetVersionImportedIsHighEnough)
{
return
}

Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which does not meet the minimum requirement of '$minimumRequiredPowerShellGetVersion'. The current PowerShellGet module will be removed and a newer version imported."
Remove-Module -Name PowerShellGet -Force
Import-Module -Name PowerShellGet -MinimumVersion $minimumRequiredPowerShellGetVersion -Global -Force
}

function Get-CurrentlyImportedPowerShellGetModuleVersion
{
[System.Version] $powerShellGetModuleVersionImported = $null
$lowestCurrentlyImportedModuleVersion =
Get-Module -Name PowerShellGet |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object |
Select-Object -First 1

if ($null -ne $lowestCurrentlyImportedModuleVersion)
{
$powerShellGetModuleVersionImported = $lowestCurrentlyImportedModuleVersion
}

return $powerShellGetModuleVersionImported
}
}
}

Expand Down Expand Up @@ -651,6 +584,8 @@ function Find-AzureArtifactsModule
$AllowPrerelease
)

Install-AndImportPowerShellGet

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Find-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -769,6 +704,11 @@ function Install-AzureArtifactsModule
$PassThru
)

Install-AndImportPowerShellGet -scope $Scope

$powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object -ExpandProperty Version
Write-Verbose "About to run Install-Module. Current PowerShellGet versions imported are '$powerShellGetVersionsImported'."

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Install-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -854,6 +794,11 @@ function Update-AzureArtifactsModule
$PassThru
)

Install-AndImportPowerShellGet -scope $Scope

$powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object -ExpandProperty Version
Write-Verbose "About to run Update-Module. Current PowerShellGet versions imported are '$powerShellGetVersionsImported'."

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Update-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -1039,6 +984,78 @@ function Get-SecurePersonalAccessTokenFromEnvironmentVariable
return $securePersonalAccessToken
}

function Install-AndImportPowerShellGet([string] $scope)
{
[string] $computerName = $Env:ComputerName
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

[System.Version] $minimumRequiredPowerShellGetVersion = '2.2.1'
$latestPowerShellGetVersionInstalled = Get-LatestPowerShellGetModuleVersionInstalled

[bool] $minimumPowerShellGetVersionIsNotInstalled = ($latestPowerShellGetVersionInstalled -lt $minimumRequiredPowerShellGetVersion)
if ($minimumPowerShellGetVersionIsNotInstalled)
{
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Information "Installing latest PowerShellGet version for user '$currentUser' to scope '$scope' on computer '$computerName'."
Install-Module -Name PowerShellGet -Repository PSGallery -Scope $scope -Force -AllowClobber
}
else
{
Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'."
}

Import-LatestPowerShellGetModule -latestPowerShellGetVersionInstalled $latestPowerShellGetVersionInstalled
}

function Import-LatestPowerShellGetModule([System.Version] $latestPowerShellGetVersionInstalled)
{
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion

[bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion)
if ($powerShellGetIsNotAlreadyImported)
{
Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
}
Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the latest installed version is '$latestPowerShellGetVersionInstalled'."

[bool] $latestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled)
if ($latestModuleVersionIsImported)
{
return
}

Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which is less than the latest installed version '$latestPowerShellGetVersionInstalled'. The current PowerShellGet module will be removed and the latest version imported."
Remove-Module -Name PowerShellGet -Force
Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force

$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'."
}

function Get-LatestPowerShellGetModuleVersionInstalled
{
$latestPowerShellGetVersionInstalled =
Get-Module -Name 'PowerShellGet' -ListAvailable |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object -Descending |
Select-Object -First 1

return $latestPowerShellGetVersionInstalled
}

function Get-CurrentlyImportedPowerShellGetModuleVersion
{
[System.Version] $lowestCurrentlyImportedModuleVersion = $null
$lowestCurrentlyImportedModuleVersion =
Get-Module -Name PowerShellGet |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object |
Select-Object -First 1

return $lowestCurrentlyImportedModuleVersion
}

Export-ModuleMember -Function Find-AzureArtifactsModule
Export-ModuleMember -Function Install-AzureArtifactsModule
Export-ModuleMember -Function Install-AndUpdateAzureArtifactsModule
Expand Down