diff options
| author | Max Howell | 2012-03-06 20:12:42 +0000 |
|---|---|---|
| committer | Max Howell | 2012-03-06 20:28:06 +0000 |
| commit | 158efd8c9a61b91caccdcb2e6b98f7d649cae93c (patch) | |
| tree | cd8ef74820a11050df7e9aa4e84b0925b7770b61 /Library | |
| parent | 1b4b8a722ecb37bfb4e99b16881075ee2f5f67c0 (diff) | |
| download | brew-158efd8c9a61b91caccdcb2e6b98f7d649cae93c.tar.bz2 | |
`brew cleanup` cleans up the download-cache
Manpage updated.
The -s switch is "scrub" and removes downloads for uninstall formula which are downloads for the latest version of that formula still.
Please NOTE cache is NOT cleaned if a formula argument is provided. I couldn't be bothered. Patches welcome :)
Closes Homebrew/homebrew#2923.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Contributions/manpages/brew.1.md | 9 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/cleanup.rb | 22 |
2 files changed, 25 insertions, 6 deletions
diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index 022705ba2..0dd115f32 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -51,15 +51,20 @@ For the full command list, see the COMMANDS section. * `cat` <formula>: Display the source to <formula>. - * `cleanup [--force] [-n]` [<formulae>]: + * `cleanup [--force] [-ns]` [<formulae>]: For all installed or specific formulae, remove any older versions from the cellar. By default, does not remove out-of-date keg-only brews, as other - software may link directly to specific versions. + software may link directly to specific versions. In addition old downloads from + the Homebrew download-cache are deleted. If `--force` is passed, remove out-of-date keg-only brews as well. If `-n` is passed, show what would be removed, but do not actually remove anything. + If `-s` is passed, scrubs the cache, removing downloads for even the latest + versions of formula. Note downloads for any installed formula will still not be + deleted. If you want to delete those too: `rm -rf $(brew --cache)` + * `create [--autotools|--cmake] [--no-fetch]` <URL>: Generate a formula for the downloadable file at <URL> and open it in `EDITOR`. Homebrew will attempt to automatically derive the formula name diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb index 0aec10f56..0f2a1875d 100644 --- a/Library/Homebrew/cmd/cleanup.rb +++ b/Library/Homebrew/cmd/cleanup.rb @@ -2,6 +2,7 @@ require 'formula' require 'cmd/prune' module Homebrew extend self + def cleanup if ARGV.named.empty? HOMEBREW_CELLAR.children.each do |rack| @@ -12,8 +13,9 @@ module Homebrew extend self # instead of core formulae. end end + clean_cache # seems like a good time to do some additional cleanup - Homebrew.prune unless ARGV.include? '-n' + Homebrew.prune unless ARGV.switch? 'n' else ARGV.formulae.each do |f| cleanup_formula f @@ -35,9 +37,8 @@ module Homebrew extend self if f.installed? and f.rack.directory? f.rack.children.each do |keg| if f.installed_prefix != keg - print "Removing #{keg}..." - rm_rf keg unless ARGV.include? '-n' - puts + puts "Removing #{keg}..." + rm_rf keg unless ARGV.switch? 'n' end end elsif f.rack.children.length > 1 @@ -47,4 +48,17 @@ module Homebrew extend self end end + def clean_cache + HOMEBREW_CACHE.children.each do |pn| + pn.stem =~ /^(.+)-(.+)$/ # greedy so works even if formula-name has hyphens in it + if $1 and $2 + f = Formula.factory($1) rescue nil + if not f or (f.version != $2 or ARGV.switch? "s" and not f.installed?) + puts "Removing #{pn}..." + rm pn unless ARGV.switch? 'n' + end + end + end + end + end |
