aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2012-04-30 15:10:51 -0500
committerMike McQuaid2012-04-30 21:37:58 +0800
commitcd4f7c10cd97f8661b7b63b9348401416d86a6ab (patch)
tree08cb68b215016e6fee6527880d70159e93f103e0 /Library
parent14a4b3adf3c44c5f92164d8fbede8aff488ea54b (diff)
downloadhomebrew-cd4f7c10cd97f8661b7b63b9348401416d86a6ab.tar.bz2
Cleanup old bottles.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/bottles.rb12
-rw-r--r--Library/Homebrew/cmd/cleanup.rb4
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