aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMax Howell2012-03-06 20:12:42 +0000
committerMax Howell2012-03-06 20:28:06 +0000
commit158efd8c9a61b91caccdcb2e6b98f7d649cae93c (patch)
treecd8ef74820a11050df7e9aa4e84b0925b7770b61 /Library
parent1b4b8a722ecb37bfb4e99b16881075ee2f5f67c0 (diff)
downloadbrew-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.md9
-rw-r--r--Library/Homebrew/cmd/cleanup.rb22
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