diff options
| author | Max Howell | 2012-03-07 11:16:27 +0000 |
|---|---|---|
| committer | Max Howell | 2012-03-07 12:33:47 +0000 |
| commit | 76aa0a62f3ef3bbb31c2688037e3932b80aff7f9 (patch) | |
| tree | ac2283a054fc5efc6eb2fb883432039a80fee9ad /Library/Homebrew/cmd | |
| parent | 15a70c36d0267af15f1c28c45a8a1bcd0c7b783f (diff) | |
| download | brew-76aa0a62f3ef3bbb31c2688037e3932b80aff7f9.tar.bz2 | |
Stop supporting `brew install --force'
Rationale: it breaks stuff. You should not be able to install over something already installed *and* linked. brew now prompts you to unlink the existing linked keg first.
I came to fix this because I discovered that `brew install foo` works without --force provided foo's formula version is different to that which is installed and linked. I'm not sure if this was intentionally broken, but it led to at least two tickets I found where people were getting crazy issues trying to install over the top of already installed previous versions.
So I also fixed a whole category of other issues, mostly by moving error handling into FormulaInstaller. Now error's can be caught in Homebrew.install and handled on a formula-by-formula basis. I will next port this behaviour to upgrade.
Diffstat (limited to 'Library/Homebrew/cmd')
| -rw-r--r-- | Library/Homebrew/cmd/install.rb | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 580b11422..bfc5d3e7b 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -11,10 +11,6 @@ module Homebrew extend self raise "No available formula for #{name}\n#{msg}" if msg end unless ARGV.force? - ARGV.formulae.each do |f| - opoo "#{f} already installed" if f.linked_keg.directory? - end unless ARGV.force? - if Process.uid.zero? and not File.stat(HOMEBREW_BREW_FILE).uid.zero? # note we only abort if Homebrew is *not* installed as sudo and the user # calls brew as root. The fix is to chown brew to root. @@ -84,29 +80,16 @@ module Homebrew extend self unless formulae.empty? perform_preinstall_checks formulae.each do |f| - # Check formula status and skip if necessary---a formula passed on the - # command line may have been installed to satisfy a dependency. - next if f.installed? unless ARGV.force? - - # Building head-only without --HEAD is an error - if not ARGV.build_head? and f.standard.nil? - raise "This is a head-only formula; install with `brew install --HEAD #{f.name}`" - end - - # Building stable-only with --HEAD is an error - if ARGV.build_head? and f.unstable.nil? - raise "No head is defined for #{f.name}" - end - begin fi = FormulaInstaller.new(f) fi.install fi.caveats fi.finish - rescue FormulaAlreadyInstalledError => e - opoo e.message + rescue CannotInstallFormulaError => e + onoe e.message end end end end + end |
