aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorMax Howell2012-03-07 11:16:27 +0000
committerMax Howell2012-03-07 12:33:47 +0000
commit76aa0a62f3ef3bbb31c2688037e3932b80aff7f9 (patch)
treeac2283a054fc5efc6eb2fb883432039a80fee9ad /Library/Homebrew/cmd
parent15a70c36d0267af15f1c28c45a8a1bcd0c7b783f (diff)
downloadbrew-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.rb23
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