Exception: FormulaConflictError Private

Inherits:
RuntimeError
  • Object
show all
Defined in:
exceptions.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Raised when a formula conflicts with another one.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(formula, conflicts) ⇒ FormulaConflictError

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns a new instance of FormulaConflictError.



400
401
402
403
404
# File 'exceptions.rb', line 400

def initialize(formula, conflicts)
  @formula = formula
  @conflicts = conflicts
  super message
end

Instance Attribute Details

#conflictsObject (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



398
399
400
# File 'exceptions.rb', line 398

def conflicts
  @conflicts
end

#formulaObject (readonly)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



398
399
400
# File 'exceptions.rb', line 398

def formula
  @formula
end

Instance Method Details

#conflict_message(conflict) ⇒ Object

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



406
407
408
409
410
411
# File 'exceptions.rb', line 406

def conflict_message(conflict)
  message = []
  message << "  #{conflict.name}"
  message << ": because #{conflict.reason}" if conflict.reason
  message.join
end

#messageString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



414
415
416
417
418
419
420
421
422
423
424
425
426
427
# File 'exceptions.rb', line 414

def message
  message = []
  message << "Cannot install #{formula.full_name} because conflicting formulae are installed."
  message.concat conflicts.map { |c| conflict_message(c) } << ""
  message << <<~EOS
    Please `brew unlink #{conflicts.map(&:name) * " "}` before continuing.

    Unlinking removes a formula's symlinks from #{HOMEBREW_PREFIX}. You can
    link the formula again after the install finishes. You can `--force` this
    install, but the build may fail or cause obscure side effects in the
    resulting software.
  EOS
  message.join("\n")
end