Skip to content

Commit 2b81057

Browse files
committed
Address PR comments
1 parent 50ac304 commit 2b81057

File tree

1 file changed

+56
-32
lines changed

1 file changed

+56
-32
lines changed

tools/DeleteModules.ps1

Lines changed: 56 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,18 @@ param(
2121
[Parameter(ParameterSetName='Scope', Mandatory = $true, Position = 0)]
2222
[ValidateSet("AzureRMAndDependencies", "AzureAndDependencies", "NetCoreModules", "AzureStackAndDependencies")]
2323
[string] $scope,
24-
[Parameter(ParameterSetName='ModuleList', Mandatory = $false)]
24+
[Parameter(ParameterSetName='ModuleList', Mandatory = $true)]
2525
[string[]] $listOfModules,
26+
[Parameter(ParameterSetName='ModulesAndVersionsList', Mandatory = $true)]
27+
[hashtable[]] $moduleVersionTable,
2628
[Parameter(Mandatory = $false)]
27-
[ValidateSet("TestGallery", "PSGallery")]
2829
[string] $repoName,
2930
[Parameter(Mandatory = $false)]
3031
[string] $nugetExe,
3132
[Parameter(Mandatory = $false)]
32-
[string] $apiKey
33+
[string] $apiKey,
34+
[Parameter(Mandatory = $false)]
35+
[switch] $Force
3336
)
3437

3538
function Get-TargetModules
@@ -38,22 +41,28 @@ function Get-TargetModules
3841
param
3942
(
4043
[string]$scope,
41-
[string[]]$moduleList
44+
[string[]]$moduleList,
45+
[hashtable[]]$moduleVersionTable
4246
)
4347

48+
$targets = @()
49+
4450
if ($listOfModules.Count -ge 1)
4551
{
46-
$targets = @()
4752
$moduleList | ForEach-Object {
4853
$targets += Find-Module -Name $_ -Repository $repoName
4954
}
55+
}
5056

51-
return $targets
57+
elseif ($moduleVersionTable.Count -ge 1)
58+
{
59+
$moduleVersionTable | ForEach-Object {
60+
$targets += Find-Module -Name $_.Module -RequiredVersion $_.Version -Repository $repoName
61+
}
5262
}
5363

5464
else
5565
{
56-
$targets = @()
5766
$query = ""
5867
if ($scope -eq "AzureRMAndDependencies") {
5968
$query = "AzureRM"
@@ -84,9 +93,9 @@ function Get-TargetModules
8493
$targets += $CDModule
8594
}
8695
}
87-
88-
return $targets
8996
}
97+
98+
return $targets
9099
}
91100

92101
function Get-DependentModules
@@ -95,25 +104,19 @@ function Get-DependentModules
95104
[string]$repoName,
96105
[string]$moduleName,
97106
[string]$moduleVersion,
98-
$allModules,
99-
$azureModules
107+
[object[]]$allModules,
108+
[object[]]$azureModules
100109
)
101110

102111
$dependencies = @()
103112
$azureModules | ForEach-Object {
104113
$targetName = $_.Name
105-
$moduleNotBeingDeleted = $true
106-
$allModules | ForEach-Object {
107-
if ($_.Name -eq $targetName)
108-
{
109-
$moduleNotBeingDeleted = $false
110-
}
111-
}
114+
$moduleBeingDeleted = $allModules | Where-Object {$_.Name -eq $targetName}
112115

113116
$_.Dependencies | ForEach-Object {
114117
$dependencyName = $_.Name
115118

116-
if ($moduleNotBeingDeleted -and ($moduleName -eq $dependencyName))
119+
if (($moduleBeingDeleted -eq $null) -and ($moduleName -eq $dependencyName))
117120
{
118121
$allTargetVersions = Find-Module -Name $targetName -Repository $repoName -AllVersions
119122
$allTargetVersions | ForEach-Object {
@@ -130,23 +133,32 @@ function Get-DependentModules
130133
}
131134
if ($dependencies.Count -ne 0)
132135
{
133-
Write-Warning "$moduleName $moduleVersion is a dependency for $dependencies the module(s) will have an orphaned dependency."
136+
return "$moduleName $moduleVersion is a dependency for $dependencies the module(s) will have an orphaned dependency. Are you sure you want to unlist this package?"
134137
}
135138
}
136139

137140
function Get-ApiKey
138141
{
139142
param([string]$repoName)
140143

141-
$vaultKey="PSTestGalleryApiKey"
142144
if ($repoName -eq "PSGallery")
143145
{
144146
$vaultKey = "PowerShellGalleryApiKey"
145147
}
148+
149+
elseif ($repoName -eq "TestGallery")
150+
{
151+
$vaultKey="PSTestGalleryApiKey"
152+
}
153+
154+
else
155+
{
156+
throw "Must supply ApiKey if not using PSGallery or TestGallery"
157+
}
146158

147159
$context = $null
148160
try {
149-
$context = Get-AzureRMContext
161+
$context = Get-AzureRMContext -ErrorAction Stop
150162
} catch {}
151163

152164
if ($context -eq $null)
@@ -171,38 +183,50 @@ if ([string]::IsNullOrEmpty($repoName))
171183
}
172184
Write-Host "Deleting modules from the following repository: $repoName"
173185

174-
$repositoryLocation = "https://dtlgalleryint.cloudapp.net/api/v2/package/"
175-
if ($repoName -eq "PSGallery")
186+
if (($repoName -eq "PSGallery") -or ([string]::IsNullOrEmpty($repoName)))
176187
{
177188
$repositoryLocation = "https://www.powershellgallery.com/api/v2/package/"
178189
}
179190

191+
elseif ($repoName -eq "TestGallery")
192+
{
193+
$repositoryLocation = "https://dtlgalleryint.cloudapp.net/api/v2/package/"
194+
}
195+
196+
else
197+
{
198+
$repositoryLocation = $repoName
199+
}
200+
180201
if ([string]::IsNullOrEmpty($apiKey))
181202
{
182203
$apiKey = Get-ApiKey -repoName $repoName
183204
}
184205

185-
$ModulesToDelete = Get-TargetModules -scope $scope -moduleList $listOfModules
206+
$ModulesToDelete = Get-TargetModules -scope $scope -moduleList $listOfModules -moduleVersionTable $moduleVersionTable
186207
$ModulesToDeleteName = $ModulesToDelete | ForEach-Object {$_.Name}
187-
$ModulesToDeleteName
188208
$azureModules = Find-Module Azure* -Repository $repoName
189209
if ($PSCmdlet.ShouldProcess("Module(s) being deleted: $ModulesToDeleteName"))
190210
{
191211
$ModulesToDelete | ForEach-Object {
212+
$version = $null
192213
if (![string]::IsNullOrEmpty($_.Version))
193214
{
194-
Get-DependentModules -repoName $repoName -moduleName $_.Name -moduleVersion $_.Version -allModules $ModulesToDelete -azureModules $azureModules
195-
&$nugetExe delete $_.Name $_.Version -ApiKey $apiKey -Source $repositoryLocation
215+
$version = $_.Version
196216
}
197217
elseif (![string]::IsNullOrEmpty($_.RequiredVersion))
198218
{
199-
Get-DependentModules -repoName $repoName -moduleName $_.Name -moduleVersion $_.RequiredVersion -allModules $ModulesToDelete -azureModules $azureModules
200-
&$nugetExe delete $_.Name $_.RequiredVersion -ApiKey $apiKey -Source $repositoryLocation
219+
$version = $_.RequiredVersion
201220
}
202221
elseif (![string]::IsNullOrEmpty($_.MinimumVersion))
203222
{
204-
Get-DependentModules -repoName $repoName -moduleName $_.Name -moduleVersion $_.MinimumVersion -allModules $ModulesToDelete -azureModules $azureModules
205-
&$nugetExe delete $_.Name $_.MinimumVersion -ApiKey $apiKey -Source $repositoryLocation
223+
$version = $_.MinimumVersion
224+
}
225+
226+
$warning = Get-DependentModules -repoName $repoName -moduleName $_.Name -moduleVersion $version -allModules $ModulesToDelete -azureModules $azureModules
227+
if (($warning -eq $null) -or ($Force) -or ($PSCmdlet.ShouldContinue($warning, "Deleting package with orphaned dependencies")))
228+
{
229+
&$nugetExe delete $_.Name $version -ApiKey $apiKey -Source $repositoryLocation -NonInteractive
206230
}
207231
}
208232
}

0 commit comments

Comments
 (0)