diff --git a/build/gdrive_retention.ps1 b/build/gdrive_retention.ps1 index 4fe1864..3e499ad 100644 --- a/build/gdrive_retention.ps1 +++ b/build/gdrive_retention.ps1 @@ -18,12 +18,18 @@ function Write-ErrorMsg($text) { Write-Host "[ERROR] $text" -ForegroundColor Red } +function Get-BuildNumber($filename) { + if ($filename -match "\.(\d+)\.(zip|exe)$") { + return [int]$matches[1] + } + return 0 +} + Write-Header "Starting cleanup of older Full and Iterative installers on Google Drive" Write-Info "Listing all files in: $rcloneRemote" $allFilesRaw = & $rclone lsf --files-only $rcloneRemote -# Check if the command succeeded if ($LASTEXITCODE -ne 0) { Write-ErrorMsg "Failed to list files from Google Drive using rclone." exit 1 @@ -35,31 +41,27 @@ if ($allFiles.Count -eq 0) { Write-WarningMsg "No files found in the remote folder." exit 0 } + Write-Info "Files found on Google Drive:" -foreach ($file in $allFiles) { - Write-Host " $file" -} +$allFiles | ForEach-Object { Write-Host " $_" } # --- Full Installers --- Write-Header 'Checking for old Full installers (AzaionSuite.Full.*.zip)' -$fullFiles = $allFiles | Where-Object { $_ -like "AzaionSuite.Full.*.zip" } | Sort-Object -Descending +$fullFiles = $allFiles | Where-Object { $_ -like "AzaionSuite.Full.*.zip" } | + Sort-Object { Get-BuildNumber $_ } -Descending if ($fullFiles.Count -eq 0) { Write-WarningMsg "No Full installer files found." } else { Write-Info "Matching Full installer files:" - foreach ($file in $fullFiles) { - Write-Host " $file" - } + $fullFiles | ForEach-Object { Write-Host " $_" } if ($fullFiles.Count -le 5) { - Write-Info "Less than or equal to 5 Full installers found — nothing to delete." + Write-Info "5 or fewer Full installers found — nothing to delete." } else { $fullToDelete = $fullFiles | Select-Object -Skip 5 Write-WarningMsg "Full installers to delete:" - foreach ($file in $fullToDelete) { - Write-Host " $file" - } + $fullToDelete | ForEach-Object { Write-Host " $_" } foreach ($file in $fullToDelete) { $res = & $rclone deletefile "$rcloneRemote/$file" 2>&1 @@ -74,24 +76,21 @@ if ($fullFiles.Count -eq 0) { # --- Iterative Installers --- Write-Header 'Checking for old Iterative installers (AzaionSuite.Iterative.*.exe)' -$iterativeFiles = $allFiles | Where-Object { $_ -like "AzaionSuite.Iterative.*.exe" } | Sort-Object -Descending +$iterativeFiles = $allFiles | Where-Object { $_ -like "AzaionSuite.Iterative.*.exe" } | + Sort-Object { Get-BuildNumber $_ } -Descending if ($iterativeFiles.Count -eq 0) { Write-WarningMsg "No Iterative installer files found." } else { Write-Info "Matching Iterative installer files:" - foreach ($file in $iterativeFiles) { - Write-Host " $file" - } + $iterativeFiles | ForEach-Object { Write-Host " $_" } if ($iterativeFiles.Count -le 5) { - Write-Info "Less than or equal to 5 Iterative installers found — nothing to delete." + Write-Info "5 or fewer Iterative installers found — nothing to delete." } else { $iterativeToDelete = $iterativeFiles | Select-Object -Skip 5 Write-WarningMsg "Iterative installers to delete:" - foreach ($file in $iterativeToDelete) { - Write-Host " $file" - } + $iterativeToDelete | ForEach-Object { Write-Host " $_" } foreach ($file in $iterativeToDelete) { $res = & $rclone deletefile "$rcloneRemote/$file" 2>&1