12
12
# limitations under the License.
13
13
# ----------------------------------------------------------------------------------
14
14
15
+ # Requires -Modules AzureRM .KeyVault
16
+ [CmdletBinding (
17
+ DefaultParameterSetName = ' Scope' ,
18
+ SupportsShouldProcess = $true
19
+ )]
15
20
param (
16
- [Parameter (Mandatory = $true , Position = 0 )]
17
- [ValidateSet (" ModuleList " , " AzureRMAndDependencies" , " AzureAndDependencies" , " NetCoreModules" , " AzureStackAndDependencies" )]
21
+ [Parameter (ParameterSetName = ' Scope ' , Mandatory = $true , Position = 0 )]
22
+ [ValidateSet (" AzureRMAndDependencies" , " AzureAndDependencies" , " NetCoreModules" , " AzureStackAndDependencies" )]
18
23
[string ] $scope ,
19
- [Parameter (Mandatory = $false )]
24
+ [Parameter (ParameterSetName = ' ModuleList ' , Mandatory = $false )]
20
25
[string []] $listOfModules ,
21
26
[Parameter (Mandatory = $false )]
22
27
[ValidateSet (" TestGallery" , " PSGallery" )]
@@ -36,7 +41,7 @@ function Get-TargetModules
36
41
[string []]$moduleList
37
42
)
38
43
39
- if ($scope -eq " ModuleList " )
44
+ if ($listOfModules .Count -ge 1 )
40
45
{
41
46
$targets = @ ()
42
47
$moduleList | ForEach-Object {
@@ -61,15 +66,14 @@ function Get-TargetModules
61
66
}
62
67
63
68
$azureRmAllVersions = Find-Module - Name $query - Repository PSGallery - AllVersions
64
- $azureRmCurrent = $azureRmAllVersions [0 ]
65
- $azureRmPrevious = $azureRmAllVersions [1 ]
66
- $currentDependencies = Find-Module - Name $query - Repository $repoName - RequiredVersion $azureRmCurrent.Version - IncludeDependencies
67
- $previousDependencies = Find-Module - Name $query - Repository $repoName - RequiredVersion $azureRmPrevious.Version - IncludeDependencies
69
+ $targets += $azureRmAllVersions [0 ]
70
+ $currentDependencies = $azureRmAllVersions [0 ].Dependencies
71
+ $previousDependencies = $azureRmAllVersions [1 ].Dependencies
68
72
$currentDependencies | ForEach-Object {
69
73
$CDModule = $_
70
74
$versionChanged = $true
71
75
$previousDependencies | ForEach-Object {
72
- if (($_.Name -eq $CDModule.Name ) -and ($_.Version -eq $CDModule.Version ))
76
+ if (($_.Name -eq $CDModule.Name ) -and (( $_.RequiredVersion -eq $CDModule.RequiredVersion ) -and ( $_ .MinimumVersion -eq $CDModule .MinimumVersion ) ))
73
77
{
74
78
$versionChanged = $false
75
79
}
@@ -157,21 +161,15 @@ function Get-ApiKey
157
161
158
162
if ([string ]::IsNullOrEmpty($nugetExe ))
159
163
{
160
- Write-Verbose " Use default nuget path"
161
164
$nugetExe = " $PSScriptRoot \nuget.exe"
162
165
}
166
+ Write-Host " Using the following NuGet path: $nugetExe "
163
167
164
168
if ([string ]::IsNullOrEmpty($repoName ))
165
169
{
166
- Write-Verbose " Deleting from PSGallery"
167
170
$repoName = " PSGallery"
168
171
}
169
-
170
- if (($scope -eq " ModuleList" ) -and ($listOfModules -eq $null ))
171
- {
172
- Write-Error " Must supply -ListOfModule when using ModuleList scope"
173
- return
174
- }
172
+ Write-Host " Deleting modules from the following repository: $repoName "
175
173
176
174
$repositoryLocation = " https://dtlgalleryint.cloudapp.net/api/v2/package/"
177
175
if ($repoName -eq " PSGallery" )
@@ -185,9 +183,26 @@ if ([string]::IsNullOrEmpty($apiKey))
185
183
}
186
184
187
185
$ModulesToDelete = Get-TargetModules - scope $scope - moduleList $listOfModules
188
- $ModulesToDelete
186
+ $ModulesToDeleteName = $ModulesToDelete | ForEach-Object {$_.Name }
187
+ $ModulesToDeleteName
189
188
$azureModules = Find-Module Azure* - Repository $repoName
190
- $ModulesToDelete | ForEach-Object {
191
- Get-DependentModules - repoName $repoName - moduleName $_.Name - moduleVersion $_.Version - allModules $ModulesToDelete - azureModules $azureModules
192
- & $nugetExe delete $_.Name $_.Version - ApiKey $apiKey - Source $repositoryLocation
189
+ if ($PSCmdlet.ShouldProcess (" Module(s) being deleted: $ModulesToDeleteName " ))
190
+ {
191
+ $ModulesToDelete | ForEach-Object {
192
+ if (! [string ]::IsNullOrEmpty($_.Version ))
193
+ {
194
+ Get-DependentModules - repoName $repoName - moduleName $_.Name - moduleVersion $_.Version - allModules $ModulesToDelete - azureModules $azureModules
195
+ & $nugetExe delete $_.Name $_.Version - ApiKey $apiKey - Source $repositoryLocation
196
+ }
197
+ elseif (! [string ]::IsNullOrEmpty($_.RequiredVersion ))
198
+ {
199
+ Get-DependentModules - repoName $repoName - moduleName $_.Name - moduleVersion $_.RequiredVersion - allModules $ModulesToDelete - azureModules $azureModules
200
+ & $nugetExe delete $_.Name $_.RequiredVersion - ApiKey $apiKey - Source $repositoryLocation
201
+ }
202
+ elseif (! [string ]::IsNullOrEmpty($_.MinimumVersion ))
203
+ {
204
+ Get-DependentModules - repoName $repoName - moduleName $_.Name - moduleVersion $_.MinimumVersion - allModules $ModulesToDelete - azureModules $azureModules
205
+ & $nugetExe delete $_.Name $_.MinimumVersion - ApiKey $apiKey - Source $repositoryLocation
206
+ }
207
+ }
193
208
}
0 commit comments