diff options
| author | Mike McQuaid | 2012-04-30 15:10:51 -0500 |
|---|---|---|
| committer | Mike McQuaid | 2012-04-30 21:37:58 +0800 |
| commit | cd4f7c10cd97f8661b7b63b9348401416d86a6ab (patch) | |
| tree | 08cb68b215016e6fee6527880d70159e93f103e0 /Library | |
| parent | 14a4b3adf3c44c5f92164d8fbede8aff488ea54b (diff) | |
| download | homebrew-cd4f7c10cd97f8661b7b63b9348401416d86a6ab.tar.bz2 | |
Cleanup old bottles.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/bottles.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/cleanup.rb | 4 |
2 files changed, 15 insertions, 1 deletions
diff --git a/Library/Homebrew/bottles.rb b/Library/Homebrew/bottles.rb index 43f226052..d7ed83d23 100644 --- a/Library/Homebrew/bottles.rb +++ b/Library/Homebrew/bottles.rb @@ -25,6 +25,18 @@ def bottle_current? f f.bottle_url && f.bottle_sha1 && Pathname.new(f.bottle_url).version == f.version end +def bottle_file_outdated? f, file + filename = file.basename.to_s + return nil unless (filename.match(bottle_regex) or filename.match(old_bottle_regex)) and f.bottle_url + + bottle_ext = filename.match(bottle_native_regex).captures.first rescue nil + bottle_ext ||= filename.match(old_bottle_regex).captures.first rescue nil + bottle_url_ext = f.bottle_url.match(bottle_native_regex).captures.first rescue nil + bottle_url_ext ||= f.bottle_url.match(old_bottle_regex).captures.first rescue nil + + bottle_ext && bottle_url_ext && bottle_ext != bottle_url_ext +end + def bottle_new_version f return 0 unless bottle_current? f f.bottle_version + 1 diff --git a/Library/Homebrew/cmd/cleanup.rb b/Library/Homebrew/cmd/cleanup.rb index 3f6471af9..40fc2f845 100644 --- a/Library/Homebrew/cmd/cleanup.rb +++ b/Library/Homebrew/cmd/cleanup.rb @@ -1,4 +1,5 @@ require 'formula' +require 'bottles' require 'cmd/prune' module Homebrew extend self @@ -55,7 +56,8 @@ module Homebrew extend self name = pn.basename.to_s.match(/(.*)-(#{version})/).captures.first rescue nil if name and version f = Formula.factory(name) rescue nil - if not f or (f.version != version or ARGV.switch? "s" and not f.installed?) + old_bottle = bottle_file_outdated? f, pn + if not f or (f.version != version or ARGV.switch? "s" and not f.installed?) or old_bottle puts "Removing #{pn}..." rm pn unless ARGV.switch? 'n' end |
