# Configuration $rcloneRemote = "AzaionGoogleDrive:AzaionSuiteBuilds" $rclone = "rclone" # Assuming rclone is available in the PATH. function Write-Header($text) { Write-Host "`n=== $text ===`n" -ForegroundColor Cyan } function Write-Info($text) { Write-Host "[INFO] $text" -ForegroundColor Green } function Write-WarningMsg($text) { Write-Host "[WARNING] $text" -ForegroundColor Yellow } 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 if ($LASTEXITCODE -ne 0) { Write-ErrorMsg "Failed to list files from Google Drive using rclone." exit 1 } $allFiles = $allFilesRaw -split "`n" | Where-Object { $_ -ne "" } if ($allFiles.Count -eq 0) { Write-WarningMsg "No files found in the remote folder." exit 0 } Write-Info "Files found on Google Drive:" $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 { Get-BuildNumber $_ } -Descending if ($fullFiles.Count -eq 0) { Write-WarningMsg "No Full installer files found." } else { Write-Info "Matching Full installer files:" $fullFiles | ForEach-Object { Write-Host " $_" } if ($fullFiles.Count -le 5) { Write-Info "5 or fewer Full installers found — nothing to delete." } else { $fullToDelete = $fullFiles | Select-Object -Skip 5 Write-WarningMsg "Full installers to delete:" $fullToDelete | ForEach-Object { Write-Host " $_" } foreach ($file in $fullToDelete) { $res = & $rclone deletefile "$rcloneRemote/$file" 2>&1 if ($LASTEXITCODE -eq 0) { Write-Info "Deleted Full installer: $file" } else { Write-ErrorMsg "Failed to delete Full installer: $file. Error: $res" } } } } # --- Iterative Installers --- Write-Header 'Checking for old Iterative installers (AzaionSuite.Iterative.*.exe)' $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:" $iterativeFiles | ForEach-Object { Write-Host " $_" } if ($iterativeFiles.Count -le 5) { Write-Info "5 or fewer Iterative installers found — nothing to delete." } else { $iterativeToDelete = $iterativeFiles | Select-Object -Skip 5 Write-WarningMsg "Iterative installers to delete:" $iterativeToDelete | ForEach-Object { Write-Host " $_" } foreach ($file in $iterativeToDelete) { $res = & $rclone deletefile "$rcloneRemote/$file" 2>&1 if ($LASTEXITCODE -eq 0) { Write-Info "Deleted Iterative installer: $file" } else { Write-ErrorMsg "Failed to delete Iterative installer: $file. Error: $res" } } } } Write-Header "Cleanup script completed"