aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorSamuel John2013-09-05 14:59:33 +0200
committerSamuel John2013-09-05 14:59:33 +0200
commitc54f879fbf53c7742d252c2534868538488a2fa9 (patch)
treeea44be6af777b154203bee2725670bcb9ca4eb0c /Library/Homebrew/cmd
parent4b320eec6b76e195ddaad6dbcb20b549af07747c (diff)
downloadhomebrew-c54f879fbf53c7742d252c2534868538488a2fa9.tar.bz2
reinstall cleanup
Diffstat (limited to 'Library/Homebrew/cmd')
-rw-r--r--Library/Homebrew/cmd/install.rb11
-rw-r--r--Library/Homebrew/cmd/reinstall.rb53
2 files changed, 18 insertions, 46 deletions
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index 2fe22cfa4..46bc59b91 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -19,13 +19,7 @@ module Homebrew extend self
end unless ARGV.force?
perform_preinstall_checks
- ARGV.formulae.each do |f|
- begin
- install_formula(f)
- rescue CannotInstallFormulaError => e
- ofail e.message
- end
- end
+ ARGV.formulae.each { |f| install_formula(f) }
end
def check_ppc
@@ -86,6 +80,7 @@ module Homebrew extend self
# another formula. In that case, don't generate an error, just move on.
rescue FormulaAlreadyInstalledError => e
opoo e.message
- # Ignore CannotInstallFormulaError and let caller handle it.
+ rescue CannotInstallFormulaError => e
+ ofail e.message
end
end
diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb
index 5e9390074..c0379b551 100644
--- a/Library/Homebrew/cmd/reinstall.rb
+++ b/Library/Homebrew/cmd/reinstall.rb
@@ -21,61 +21,38 @@ module Homebrew extend self
canonical_name = Formula.canonical_name(name)
formula = Formula.factory(canonical_name)
- if not formula.installed?
- if force_new_install?
- oh1 "Force installing new formula: #{name}"
- self.install_formula formula
- next
- else
- raise <<-EOS.undent
- #{formula} is not installed. Please install it first or use
- "--force-new-install" flag.
- EOS
- end
- end
-
- linked_keg_ref = HOMEBREW_REPOSITORY/'opt'/canonical_name
- keg = Keg.new(linked_keg_ref.realpath)
-
begin
oh1 "Reinstalling #{name} #{ARGV.options_only*' '}"
- quarantine keg
+ opt_link = HOMEBREW_PREFIX/'opt'/canonical_name
+ if opt_link.exist?
+ keg = Keg.new(opt_link.realpath)
+ backup keg
+ end
self.install_formula formula
rescue Exception => e
ofail e.message unless e.message.empty?
- restore_quarantine keg, formula
- raise 'Reinstallation abort.'
+ restore_backup keg, formula
+ raise 'Reinstall failed.'
else
- remove_quarantine keg
+ backup_path(keg).rmtree if backup_path(keg).exist?
end
end
end
- def force_new_install?
- ARGV.include? '--force-new-install'
- end
-
- def quarantine keg
+ def backup keg
keg.unlink
-
- path = Pathname.new(keg.to_s)
- path.rename quarantine_path(path)
+ keg.rename backup_path(keg)
end
- def restore_quarantine keg, formula
- path = Pathname.new(quarantine_path(keg))
+ def restore_backup keg, formula
+ path = backup_path(keg)
if path.directory?
- path.rename keg.to_s
+ path.rename keg
keg.link unless formula.keg_only?
end
end
- def remove_quarantine keg
- path = Pathname.new(quarantine_path(keg))
- path.rmtree
- end
-
- def quarantine_path path
- path.to_s + '.reinstall'
+ def backup_path path
+ Pathname.new "#{path}.reinstall"
end
end