|
|
@@ -1,141 +1,141 @@
|
|
|
-########################################
|
|
|
-Set-StrictMode -Version 3.0 #
|
|
|
-$ErrorActionPreference = "Stop" #
|
|
|
-########################################
|
|
|
-
|
|
|
-[string]$FirmwareVersion = $args[0]
|
|
|
-[string]$ReleaseVersion = $args[1]
|
|
|
-[string]$RepoSelf = $args[2]
|
|
|
-[string]$RepoUnleashed = $args[3]
|
|
|
-[bool]$ForGithubActions = $true
|
|
|
-
|
|
|
-################################################################################################################################
|
|
|
-function CleanInput
|
|
|
-{
|
|
|
- param(
|
|
|
- [string]
|
|
|
- $DurtyString
|
|
|
- )
|
|
|
- return $DurtyString -replace ('[^a-zA-Z\d_\-\,\.\t\n\r\:\;]', '')
|
|
|
-}
|
|
|
-
|
|
|
-################################################################################################################################
|
|
|
-
|
|
|
-$Output = @{
|
|
|
- RELEASE_VERSION = $ReleaseVersion
|
|
|
- CURRENT_TAG = $FirmwareVersion
|
|
|
- REMOTE_TAG_INFO = $FirmwareVersion
|
|
|
- RELEASE_TYPE = 0
|
|
|
-}
|
|
|
-
|
|
|
-$Release = @(`
|
|
|
- (CleanInput `
|
|
|
- (gh release list -L 1 --repo $RepoUnleashed)`
|
|
|
- ) -split "`t")
|
|
|
-
|
|
|
-$FirmwareVersionNumber = 0
|
|
|
-$StoredFirmwareVersionNumber = 0
|
|
|
-$LatestFirmware = $Release[2]
|
|
|
-if ($Release[2] -match '\-(\d+)$')
|
|
|
-{
|
|
|
- $FirmwareVersionNumber = [int]($Matches[1])
|
|
|
-}
|
|
|
-else
|
|
|
-{
|
|
|
- Write-Error ('::error title=Invalid firmware number::Error during execution this tags {0}' -f $FirmwareVersionNumber)
|
|
|
- exit 1
|
|
|
-}
|
|
|
-if ($FirmwareVersion -match '\-(\d+)$')
|
|
|
-{
|
|
|
- $StoredFirmwareVersionNumber = [int]($Matches[1])
|
|
|
-}
|
|
|
-else
|
|
|
-{
|
|
|
- Write-Error ('::error title=Invalid STORED firmware number::Error during execution this version {0}' -f $FirmwareVersion)
|
|
|
- exit 1
|
|
|
-}
|
|
|
-$Delta = ( [DateTime]::Now - [DateTime]::Parse($Release[3]))
|
|
|
-Write-Host "FirmwareVersionNumber: $FirmwareVersionNumber, Delta: $Delta"
|
|
|
-#exit 0
|
|
|
-
|
|
|
-$NewVersionFw = $false
|
|
|
-Write-Host ('Latest firmware {0}' -f $FirmwareVersionNumber)
|
|
|
-
|
|
|
-$Output.REMOTE_TAG_INFO = Write-Host ('[{0}]({1}/releases/tag/{2})' `
|
|
|
- -f $LatestFirmware, $RepoUnleashed, $LatestFirmware)
|
|
|
-if (($FirmwareVersionNumber -gt $StoredFirmwareVersionNumber) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
-{
|
|
|
- $Output.REMOTE_TAG_INFO = $LatestFirmware
|
|
|
- $NewVersionFw = $true
|
|
|
-}
|
|
|
-elseif ($FirmwareVersionNumber -lt $StoredFirmwareVersionNumber)
|
|
|
-{
|
|
|
- Write-Error ('::error title=Invalid check of stored::Version in repo: {0}, but we think it is {1}' `
|
|
|
- -f $FirmwareVersionNumber, $StoredFirmwareVersionNumber)
|
|
|
- exit 1
|
|
|
-}
|
|
|
-
|
|
|
-$PublishDates = (gh api -H "Accept: application/vnd.github+json" `
|
|
|
- -H "X-GitHub-Api-Version: 2022-11-28" "/repos/$( $RepoSelf )/releases?per_page=1" `
|
|
|
- | ConvertFrom-Json | Select-Object published_at, created_at)
|
|
|
-$LastPublished = ($null -eq $PublishDates.published_at ? $PublishDates.created_at : $PublishDates.published_at)
|
|
|
-$Delta = ([DateTime]::Now - $LastPublished)
|
|
|
-
|
|
|
-$Release = (gh api -H "Accept: application/vnd.github+json" `
|
|
|
- -H "X-GitHub-Api-Version: 2022-11-28" "/repos/$( $RepoSelf )/tags?per_page=1" `
|
|
|
- | ConvertFrom-Json).name
|
|
|
-Write-Host ('Release {0}' -f $Release) -ForegroundColor Gray -BackgroundColor Blue
|
|
|
-$LatestTag = $Release.Substring(1)
|
|
|
-
|
|
|
-$CurrentVersion = [version]::Parse($ReleaseVersion)
|
|
|
-$ParsedRepoVersion = [version]::Parse($LatestTag)
|
|
|
-
|
|
|
-Write-Host ('Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion) `
|
|
|
- -ForegroundColor Gray -BackgroundColor Blue
|
|
|
-Write-Debug ('::debug Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
-
|
|
|
-if (($CurrentVersion -lt $ParsedRepoVersion) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
-{
|
|
|
- $Tag = ('{0}.{1}.{2}' -f $ParsedRepoVersion.Major, $ParsedRepoVersion.Minor, $ParsedRepoVersion.Build)
|
|
|
-
|
|
|
- $Output.RELEASE_VERSION = $Tag
|
|
|
- $Output.RELEASE_TYPE = 2
|
|
|
-
|
|
|
- Write-Host ('::warning title=New release!::Release {0}' -f $Tag)
|
|
|
-}
|
|
|
-elseif ( $NewVersionFw )
|
|
|
-{
|
|
|
- $Tag = ('{0}.{1}.{2}' -f $CurrentVersion.Major, $CurrentVersion.Minor, ($CurrentVersion.Build + 1))
|
|
|
-
|
|
|
- $Output.RELEASE_VERSION = $Tag
|
|
|
- $Output.RELEASE_TYPE = 1
|
|
|
-
|
|
|
- Write-Host ('::warning title=Firmware was changed!::New version is {0}, need to create release {1}' -f $LatestFirmware, $Tag)
|
|
|
-}
|
|
|
-elseif ( ($Delta -gt [TimeSpan]::FromMinutes(10)) -and ($CurrentVersion -gt $ParsedRepoVersion))
|
|
|
-{
|
|
|
- Write-Host ('::warning title=Invalid version!::Version in settings: {0}, but repo version is {1}. Going to change variable' `
|
|
|
- -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
-
|
|
|
- $Output.RELEASE_VERSION = $ParsedRepoVersion
|
|
|
- $Output.RELEASE_TYPE = 3
|
|
|
-}
|
|
|
-else
|
|
|
-{
|
|
|
- # none to release
|
|
|
- Write-Host 'No new versions, sorry'
|
|
|
-}
|
|
|
-
|
|
|
-$Output.CURRENT_TAG = $LatestTag
|
|
|
-
|
|
|
-if($ForGithubActions) {
|
|
|
- $Plain = New-Object -TypeName "System.Text.StringBuilder";
|
|
|
- $Output.GetEnumerator() | ForEach-Object {
|
|
|
- [void]$Plain.Append($_.Key)
|
|
|
- [void]$Plain.Append('=')
|
|
|
- [void]$Plain.AppendLine($_.Value)
|
|
|
- }
|
|
|
- Write-Output $Plain.ToString()
|
|
|
-} else {
|
|
|
- $Output
|
|
|
-}
|
|
|
+########################################
|
|
|
+Set-StrictMode -Version 3.0 #
|
|
|
+$ErrorActionPreference = "Stop" #
|
|
|
+########################################
|
|
|
+
|
|
|
+[string]$FirmwareVersion = $args[0]
|
|
|
+[string]$ReleaseVersion = $args[1]
|
|
|
+[string]$RepoSelf = $args[2]
|
|
|
+[string]$RepoUnleashed = $args[3]
|
|
|
+[bool]$ForGithubActions = $true
|
|
|
+
|
|
|
+################################################################################################################################
|
|
|
+function CleanInput
|
|
|
+{
|
|
|
+ param(
|
|
|
+ [string]
|
|
|
+ $DurtyString
|
|
|
+ )
|
|
|
+ return $DurtyString -replace ('[^a-zA-Z\d_\-\,\.\t\n\r\:\;]', '')
|
|
|
+}
|
|
|
+
|
|
|
+################################################################################################################################
|
|
|
+
|
|
|
+$Output = @{
|
|
|
+ RELEASE_VERSION = $ReleaseVersion
|
|
|
+ CURRENT_TAG = $FirmwareVersion
|
|
|
+ REMOTE_TAG_INFO = $FirmwareVersion
|
|
|
+ RELEASE_TYPE = 0
|
|
|
+}
|
|
|
+
|
|
|
+$Release = @(`
|
|
|
+ (CleanInput `
|
|
|
+ (gh release list -L 1 --repo $RepoUnleashed)`
|
|
|
+ ) -split "`t")
|
|
|
+
|
|
|
+$FirmwareVersionNumber = 0
|
|
|
+$StoredFirmwareVersionNumber = 0
|
|
|
+$LatestFirmware = $Release[2]
|
|
|
+if ($Release[2] -match '\-(\d+)$')
|
|
|
+{
|
|
|
+ $FirmwareVersionNumber = [int]($Matches[1])
|
|
|
+}
|
|
|
+else
|
|
|
+{
|
|
|
+ Write-Error ('::error title=Invalid firmware number::Error during execution this tags {0}' -f $FirmwareVersionNumber)
|
|
|
+ exit 1
|
|
|
+}
|
|
|
+if ($FirmwareVersion -match '\-(\d+)$')
|
|
|
+{
|
|
|
+ $StoredFirmwareVersionNumber = [int]($Matches[1])
|
|
|
+}
|
|
|
+else
|
|
|
+{
|
|
|
+ Write-Error ('::error title=Invalid STORED firmware number::Error during execution this version {0}' -f $FirmwareVersion)
|
|
|
+ exit 1
|
|
|
+}
|
|
|
+$Delta = ( [DateTime]::Now - [DateTime]::Parse($Release[3]))
|
|
|
+Write-Host "FirmwareVersionNumber: $FirmwareVersionNumber, Delta: $Delta"
|
|
|
+#exit 0
|
|
|
+
|
|
|
+$NewVersionFw = $false
|
|
|
+Write-Host ('Latest firmware {0}' -f $FirmwareVersionNumber)
|
|
|
+
|
|
|
+$Output.REMOTE_TAG_INFO = Write-Host ('[{0}]({1}/releases/tag/{2})' `
|
|
|
+ -f $LatestFirmware, $RepoUnleashed, $LatestFirmware)
|
|
|
+if (($FirmwareVersionNumber -gt $StoredFirmwareVersionNumber) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
+{
|
|
|
+ $Output.REMOTE_TAG_INFO = $LatestFirmware
|
|
|
+ $NewVersionFw = $true
|
|
|
+}
|
|
|
+elseif ($FirmwareVersionNumber -lt $StoredFirmwareVersionNumber)
|
|
|
+{
|
|
|
+ Write-Error ('::error title=Invalid check of stored::Version in repo: {0}, but we think it is {1}' `
|
|
|
+ -f $FirmwareVersionNumber, $StoredFirmwareVersionNumber)
|
|
|
+ exit 1
|
|
|
+}
|
|
|
+
|
|
|
+$PublishDates = (gh api -H "Accept: application/vnd.github+json" `
|
|
|
+ -H "X-GitHub-Api-Version: 2022-11-28" "/repos/$( $RepoSelf )/releases?per_page=1" `
|
|
|
+ | ConvertFrom-Json | Select-Object published_at, created_at)
|
|
|
+$LastPublished = ($null -eq $PublishDates.published_at ? $PublishDates.created_at : $PublishDates.published_at)
|
|
|
+$Delta = ([DateTime]::Now - $LastPublished)
|
|
|
+
|
|
|
+$Release = (gh api -H "Accept: application/vnd.github+json" `
|
|
|
+ -H "X-GitHub-Api-Version: 2022-11-28" "/repos/$( $RepoSelf )/tags?per_page=1" `
|
|
|
+ | ConvertFrom-Json).name
|
|
|
+Write-Host ('Release {0}' -f $Release) -ForegroundColor Gray -BackgroundColor Blue
|
|
|
+$LatestTag = $Release.Substring(1)
|
|
|
+
|
|
|
+$CurrentVersion = [version]::Parse($ReleaseVersion)
|
|
|
+$ParsedRepoVersion = [version]::Parse($LatestTag)
|
|
|
+
|
|
|
+Write-Host ('Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion) `
|
|
|
+ -ForegroundColor Gray -BackgroundColor Blue
|
|
|
+Write-Debug ('::debug Current tag:Repos tag {0}, {1}' -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
+
|
|
|
+if (($CurrentVersion -lt $ParsedRepoVersion) -and ( $Delta -gt [TimeSpan]::FromMinutes(10)))
|
|
|
+{
|
|
|
+ $Tag = ('{0}.{1}.{2}' -f $ParsedRepoVersion.Major, $ParsedRepoVersion.Minor, $ParsedRepoVersion.Build)
|
|
|
+
|
|
|
+ $Output.RELEASE_VERSION = $Tag
|
|
|
+ $Output.RELEASE_TYPE = 2
|
|
|
+
|
|
|
+ Write-Host ('::warning title=New release!::Release {0}' -f $Tag)
|
|
|
+}
|
|
|
+elseif ( $NewVersionFw )
|
|
|
+{
|
|
|
+ $Tag = ('{0}.{1}.{2}' -f $CurrentVersion.Major, $CurrentVersion.Minor, ($CurrentVersion.Build + 1))
|
|
|
+
|
|
|
+ $Output.RELEASE_VERSION = $Tag
|
|
|
+ $Output.RELEASE_TYPE = 1
|
|
|
+
|
|
|
+ Write-Host ('::warning title=Firmware was changed!::New version is {0}, need to create release {1}' -f $LatestFirmware, $Tag)
|
|
|
+}
|
|
|
+elseif ( ($Delta -gt [TimeSpan]::FromMinutes(10)) -and ($CurrentVersion -gt $ParsedRepoVersion))
|
|
|
+{
|
|
|
+ Write-Host ('::warning title=Invalid version!::Version in settings: {0}, but repo version is {1}. Going to change variable' `
|
|
|
+ -f $CurrentVersion, $ParsedRepoVersion)
|
|
|
+
|
|
|
+ $Output.RELEASE_VERSION = $ParsedRepoVersion
|
|
|
+ $Output.RELEASE_TYPE = 3
|
|
|
+}
|
|
|
+else
|
|
|
+{
|
|
|
+ # none to release
|
|
|
+ Write-Host 'No new versions, sorry'
|
|
|
+}
|
|
|
+
|
|
|
+$Output.CURRENT_TAG = $LatestTag
|
|
|
+
|
|
|
+if($ForGithubActions) {
|
|
|
+ $Plain = New-Object -TypeName "System.Text.StringBuilder";
|
|
|
+ $Output.GetEnumerator() | ForEach-Object {
|
|
|
+ [void]$Plain.Append($_.Key)
|
|
|
+ [void]$Plain.Append('=')
|
|
|
+ [void]$Plain.AppendLine($_.Value)
|
|
|
+ }
|
|
|
+ Write-Output $Plain.ToString()
|
|
|
+} else {
|
|
|
+ $Output
|
|
|
+}
|