- Notifications
You must be signed in to change notification settings - Fork 187
/
Copy pathValidateUpdatedModuleVersion.ps1
49 lines (46 loc) · 1.5 KB
/
ValidateUpdatedModuleVersion.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
[CmdletBinding()]
param(
[Parameter()][ValidateNotNullOrEmpty()][string] $ModuleName,
[Parameter()][ValidateNotNullOrEmpty()][string] $NextVersion,
[Parameter()][string] $PSRepository="PSGallery",
[int] $ModulePreviewNumber=-1
)
enum VersionState {
Invalid
Valid
EqualToFeed
NotOnFeed
}
# Module import.
Import-Module PackageManagement
Import-Module PowerShellGet
$AllowPreRelease=$true
if($ModulePreviewNumber-eq-1) {
$AllowPreRelease=$false
}
[VersionState]$ValidationState= [VersionState]::Invalid
# Get current published version from PS Gallery.
$PSGalleryModule=Find-Module-Name $ModuleName-Repository $PSRepository-ErrorAction Ignore -AllowPrerelease:$AllowPreRelease
if ($null-ne$PSGalleryModule ) {
Write-Warning$PSGalleryModule.Version
if($PSGalleryModule.Version-like'*preview*'){
$ValidationState= [VersionState]::Valid
return$ValidationState
}
$PSGalleryVersion= [version]$PSGalleryVersion
$LocalVersion= [version]$NextVersion
# Local version is equal to PS Gallery version.
if ($LocalVersion-eq$PSGalleryVersion) {
$ValidationState= [VersionState]::EqualToFeed
}
# Local version is greater than PS Gallery version.
elseif ($LocalVersion-gt$PSGalleryVersion) {
$ValidationState= [VersionState]::Valid
}
}
else {
$ValidationState= [VersionState]::NotOnFeed
}
return$ValidationState