Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

83 lines (65 sloc) 2.648 kb
Param($leaveLatest)
#declare named params for ease of calling via command-line
#note: this line is ONLY valid if it is the first line of the file
#PLEASE DO NOT MOVE THE PARAM(...) LINE FROM ITS CURRENT POSITION
# OR THIS SCRIPT WILL BREAK!!!
$credentialsFile = ".\s3-credentials.ps1"
#bail out if the credentials file cannot be found
if (!([IO.File]::Exists($credentialsFile)))
{
Write-Output ("***ERROR: cannot continue without the S3 credentials contained in " + $credentialsFile)
exit 1
}
else
{
. $credentialsFile
}
#CONST values
$key = GetKey
$secret = GetSecret
$targetFolderPath = "dist.springframework.org/snapshot/SPRNET"
$newline = [Environment]::NewLine
#verify the args aren't null before we proceed
if ((!($leaveLatest)))
{
Write-Output "***ERROR: INVALID ARGUMENTS***"
Write-Output $newline
Write-Output "Correct usage is..."
Write-Output "powershell.exe <scriptname> -leaveLatest <number-of-files-to-leave>"
Write-Output $newline
Write-Output "example:"
Write-Output "powershell.exe .\delete.ps1 -leaveLatest 10"
Write-Output "This will delete all but the 10 most recent files (by date) on S3"
#exit with exit code 1 (failure) so calling procs can know WTF happened
exit 1
}
#ensure the CloudBerry Labs snap-ins are loaded before we try to call them...
Add-PSSnapin CloudBerryLab.Explorer.PSSnapIn
#get the connection to s3
Write-Output "Connecting to S3..."
$s3 = Get-CloudS3Connection -Key $key -Secret $secret
Write-Output "...connection successful."
Write-Output $newline
#get a folder object that represents the target path
$targetFolder = $s3 | Select-CloudFolder -Path $targetFolderPath
#get the connection to s3
Write-Output ("Deleting old uploads so only the most recent " + $leaveLatest + " files remain...") $newline
$files = $targetFolder | Get-CloudItem | Sort-Object ModifyDate -Descending | Select-Object -Skip $leaveLatest
if($files)
{
$files | ForEach-Object {
Write-Output ("Removing file: " + $_.DisplayName + " ( originally uploaded: " + $_.ModifyDate + " )...")
Remove-CloudItem -Filter $_.DisplayName -Folder $targetFolder
Write-Output "...file deletion successful."
}
}
else
{
Write-Output (">>>There are less than " + $leaveLatest + " files on S3 so no files need to be removed from S3 at this time.")
}
Write-Output $newline
#if we get this far, we should return ERRORCODE 0 so calling procs can know we succeeded
#technically this is redundant, but best to be explicit :)
Write-Output $newline
Write-Output "Exiting Powershell script normally."
exit 0
Jump to Line
Something went wrong with that request. Please try again.