diff options
| author | Max Howell | 2012-03-07 11:16:27 +0000 |
|---|---|---|
| committer | Max Howell | 2012-03-07 12:33:47 +0000 |
| commit | 5bddaf2e355e5fe78e05e68113fad830ed12f517 (patch) | |
| tree | 66ac29667492fa6962f6a82ab111f922b12d67c3 /Library/Homebrew/cmd | |
| parent | 9b798ccb203a8692a406f4a44e93b1ef748e7606 (diff) | |
| download | homebrew-5bddaf2e355e5fe78e05e68113fad830ed12f517.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 |
