diff options
| author | Misty De Meo | 2012-07-28 13:02:46 -0300 |
|---|---|---|
| committer | Misty De Meo | 2012-07-30 13:47:12 -0300 |
| commit | 0c237a86797eabd181b5dd889e8981ab1648320e (patch) | |
| tree | fbf00f2ce82d9f05971ab8ef289a9173d2ee2468 /Library/Homebrew | |
| parent | 6a8c4843f773efb62f9ec0b658837be50ec9d632 (diff) | |
| download | brew-0c237a86797eabd181b5dd889e8981ab1648320e.tar.bz2 | |
Add conflicts_with DSL method
conflicts_with is a thin wrapper around Requirement which simplifies
marking conflicts between formulae.
Closes Homebrew/homebrew#13687.
Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/cmd/info.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/dependencies.rb | 20 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 15 |
3 files changed, 40 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 079794f27..0489a02e0 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -68,6 +68,11 @@ module Homebrew extend self end puts "Depends on: #{f.deps*', '}" unless f.deps.empty? + conflicts = [] + f.external_deps.each do |dep| + conflicts << dep.formula if dep.is_a? ConflictRequirement + end + puts "Conflicts with: #{conflicts*', '}" unless conflicts.empty? if f.rack.directory? kegs = f.rack.children diff --git a/Library/Homebrew/dependencies.rb b/Library/Homebrew/dependencies.rb index de9ed9207..9493c623b 100644 --- a/Library/Homebrew/dependencies.rb +++ b/Library/Homebrew/dependencies.rb @@ -287,3 +287,23 @@ class MPIDependency < Requirement end end + +class ConflictRequirement < Requirement + attr_reader :formula + + def initialize formula, message + @formula = formula + @message = message + end + + def message; @message; end + + def satisfied? + keg = Formula.factory(@formula).prefix + not keg.exist? && Keg.new(keg).linked? + end + + def fatal? + not ARGV.force? + end +end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index e91fe388e..061fa5bd4 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -626,6 +626,21 @@ private dependencies.add(dep) end + def conflicts_with formula, opts={} + message = <<-EOS.undent + #{formula} cannot be installed alongside #{name.downcase}. + EOS + message << "This is because #{opts[:reason]}\n" if opts[:reason] + if !ARGV.force? then message << <<-EOS.undent + Please `brew unlink` or `brew uninstall` #{formula} before continuing. + To install anyway, use: + brew install --force + EOS + end + + dependencies.add ConflictRequirement.new(formula, message) + end + def skip_clean paths if paths == :all @skip_clean_all = true |
