Skip to content

Instantly share code, notes, and snippets.

@jcdarwin
Created December 5, 2013 00:52
Show Gist options
  • Save jcdarwin/7798367 to your computer and use it in GitHub Desktop.
Save jcdarwin/7798367 to your computer and use it in GitHub Desktop.
A bash script to only retain a specified number of releases, a la Capistrano's keep_releases
#!/bin/bash
# http://commanigy.com/blog/2012/03/31/a-bash-version-of-keep-releases-known-from-capistrano-ruby-scripts
keep_releases=3
#versions=`find ./cwp* -maxdepth 0 -type d -exec echo '{}' +`
#versions=`ls -xrt`
versions=`find ./cwp* -maxdepth 0 -type d | tac`
releases=(${versions// / })
# check available number of versions in releases directory
releases_count=${#releases[@]}
echo "Number of releases present: $releases_count"
echo "Number of releases to keep: $keep_releases"
if [ $releases_count -le $keep_releases ]
then
echo 'No old releases to clean up'
else
echo keeping $keep_releases of $releases_count deployed releases
releases=(${releases[@]:0:0} ${releases[@]:($keep_releases)})
for release in "${releases[@]}"
do
path=$releases_path$release
echo "DELETING $path"
`rm -rf $path`
done
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment