-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelpers.ps1
More file actions
103 lines (84 loc) · 4.24 KB
/
helpers.ps1
File metadata and controls
103 lines (84 loc) · 4.24 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
$gitlabProjectId = 10582521
$gitLabReleasesUri = "https://gitlab.com/api/v4/projects/$gitlabProjectId/releases"
$userAgent = 'Update checker of Chocolatey Community Package ''openrgb'''
function Get-SourceCode([string] $TagName) {
$releaseInfoUri = Get-SpecificReleaseInfoUri -TagName $TagName
$releaseInfo = Invoke-RestMethod -Uri $releaseInfoUri -UserAgent $userAgent -UseBasicParsing
$assetUri = $releaseInfo.assets.sources[0].url
$version = Get-SemanticVersion -TagName $TagName
Invoke-WebRequest -Uri $assetUri -UserAgent $userAgent -OutFile ".\OpenRGB-release_$version.zip" -UseBasicParsing
}
function Get-SpecificReleaseInfoUri([string] $TagName) {
return "$gitLabReleasesUri/$tagName"
}
function Get-TagName([semver] $Version) {
if ([string]::IsNullOrEmpty($Version.PreReleaseLabel)) {
$tagName = "release_$($Version.Major).$($Version.Minor)"
}
else {
$tagName = "release_candidate_$($Version.Major).$($Version.Minor)$($Version.PreReleaseLabel)"
}
return $tagName
}
function Get-RawVersion([string] $TagName) {
return $TagName.TrimStart('release_').TrimStart('candidate_')
}
function Get-SemanticVersion([string] $TagName) {
return [semver] ((Get-RawVersion -TagName $TagName) -replace '(\d)(rc\d+)', "`$1-`$2")
}
function Get-RelevantReleaseInfo($ReleaseInfo, [string] $ReleaseUri) {
if ($null -eq $ReleaseInfo) {
$ReleaseInfo = Invoke-RestMethod -Uri $ReleaseUri -UserAgent $userAgent -UseBasicParsing
}
$tagName = $ReleaseInfo.tag_name
return @{
CommitShortId = $ReleaseInfo.commit.short_id.Substring(0, 7)
RawVersion = Get-RawVersion -TagName $tagName
TagName = $tagName
Version = Get-SemanticVersion -TagName $tagName
}
}
function Get-DownloadUris($RelevantReleaseInfo, [semver] $Version) {
if ($null -eq $RelevantReleaseInfo -and $null -ne $Version) {
#TODO: Map any package fix versions to underlying software version
$tagName = Get-TagName -Version $Version
$releaseUri = Get-SpecificReleaseInfoUri -TagName $tagName
$RelevantReleaseInfo = Get-RelevantReleaseInfo -ReleaseUri $releaseUri
}
return @{
Url32 = "https://codeberg.org/OpenRGB/OpenRGB/releases/download/$($RelevantReleaseInfo.TagName)/OpenRGB_$($RelevantReleaseInfo.RawVersion)_Windows_32_$($RelevantReleaseInfo.CommitShortId).zip"
Url64 = "https://codeberg.org/OpenRGB/OpenRGB/releases/download/$($RelevantReleaseInfo.TagName)/OpenRGB_$($RelevantReleaseInfo.RawVersion)_Windows_64_$($RelevantReleaseInfo.CommitShortId).zip"
}
}
function Get-LatestStableVersionInfo {
$releasesInfo = Invoke-RestMethod -Uri $gitLabReleasesUri -UserAgent $userAgent -UseBasicParsing
$latestReleaseInfo = $releasesInfo | Where-Object { $_.name -match 'OpenRGB Release \d\.\d+' } | Select-Object -First 1
$relevantReleaseInfo = Get-RelevantReleaseInfo -ReleaseInfo $latestReleaseInfo
$downloadUris = Get-DownloadUris -RelevantReleaseInfo $relevantReleaseInfo
return @{
SoftwareVersion = $relevantReleaseInfo.RawVersion
Tag = $relevantReleaseInfo.TagName
Url32 = $downloadUris.Url32
Url64 = $downloadUris.Url64
Version = $relevantReleaseInfo.Version #This may change if building a package fix version
}
}
function Get-LatestReleaseCandidateVersionInfo([switch] $WinRing0) {
$releasesInfo = Invoke-RestMethod -Uri $gitLabReleasesUri -UserAgent $userAgent -UseBasicParsing
if ($WinRing0) {
$tagPattern = 'release_candidate_\d\.\d+rc\d+wr0'
}
else {
$tagPattern = 'release_candidate_\d\.\d+rc\d+'
}
$latestReleaseInfo = $releasesInfo | Where-Object { $_.tag_name -match $tagPattern } | Select-Object -First 1
$relevantReleaseInfo = Get-RelevantReleaseInfo -ReleaseInfo $latestReleaseInfo
$downloadUris = Get-DownloadUris -RelevantReleaseInfo $relevantReleaseInfo
return @{
SoftwareVersion = $relevantReleaseInfo.RawVersion
Tag = $relevantReleaseInfo.TagName
Url32 = $downloadUris.Url32
Url64 = $downloadUris.Url64
Version = $relevantReleaseInfo.Version #This may change if building a package fix version
}
}