Document exceptions.
This commit is contained in:
parent
f98223ba1a
commit
0240128f29
@ -3,6 +3,7 @@
|
||||
require "shellwords"
|
||||
require "utils"
|
||||
|
||||
# Raised when a command is used wrong.
|
||||
class UsageError < RuntimeError
|
||||
attr_reader :reason
|
||||
|
||||
@ -19,12 +20,14 @@ class UsageError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a command expects a formula and none was specified.
|
||||
class FormulaUnspecifiedError < UsageError
|
||||
def initialize
|
||||
super "this command requires a formula argument"
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a command expects a keg and none was specified.
|
||||
class KegUnspecifiedError < UsageError
|
||||
def initialize
|
||||
super "this command requires a keg argument"
|
||||
@ -35,6 +38,7 @@ class MultipleVersionsInstalledError < RuntimeError; end
|
||||
|
||||
class NotAKegError < RuntimeError; end
|
||||
|
||||
# Raised when a keg doesn't exist.
|
||||
class NoSuchKegError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
@ -44,6 +48,7 @@ class NoSuchKegError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when an invalid attribute is used in a formula.
|
||||
class FormulaValidationError < StandardError
|
||||
attr_reader :attr, :formula
|
||||
|
||||
@ -56,10 +61,14 @@ end
|
||||
|
||||
class FormulaSpecificationError < StandardError; end
|
||||
|
||||
# Raised when a deprecated method is used.
|
||||
#
|
||||
# @api private
|
||||
class MethodDeprecatedError < StandardError
|
||||
attr_accessor :issues_url
|
||||
end
|
||||
|
||||
# Raised when a formula is not available.
|
||||
class FormulaUnavailableError < RuntimeError
|
||||
attr_reader :name
|
||||
attr_accessor :dependent
|
||||
@ -79,6 +88,9 @@ class FormulaUnavailableError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Shared methods for formula class errors.
|
||||
#
|
||||
# @api private
|
||||
module FormulaClassUnavailableErrorModule
|
||||
attr_reader :path, :class_name, :class_list
|
||||
|
||||
@ -107,6 +119,7 @@ module FormulaClassUnavailableErrorModule
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula does not contain a formula class.
|
||||
class FormulaClassUnavailableError < FormulaUnavailableError
|
||||
include FormulaClassUnavailableErrorModule
|
||||
|
||||
@ -118,6 +131,9 @@ class FormulaClassUnavailableError < FormulaUnavailableError
|
||||
end
|
||||
end
|
||||
|
||||
# Shared methods for formula unreadable errors.
|
||||
#
|
||||
# @api private
|
||||
module FormulaUnreadableErrorModule
|
||||
attr_reader :formula_error
|
||||
|
||||
@ -126,6 +142,7 @@ module FormulaUnreadableErrorModule
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula is unreadable.
|
||||
class FormulaUnreadableError < FormulaUnavailableError
|
||||
include FormulaUnreadableErrorModule
|
||||
|
||||
@ -135,6 +152,7 @@ class FormulaUnreadableError < FormulaUnavailableError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula in a specific tap is unavailable.
|
||||
class TapFormulaUnavailableError < FormulaUnavailableError
|
||||
attr_reader :tap, :user, :repo
|
||||
|
||||
@ -152,6 +170,7 @@ class TapFormulaUnavailableError < FormulaUnavailableError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula in a specific tap does not contain a formula class.
|
||||
class TapFormulaClassUnavailableError < TapFormulaUnavailableError
|
||||
include FormulaClassUnavailableErrorModule
|
||||
|
||||
@ -165,6 +184,7 @@ class TapFormulaClassUnavailableError < TapFormulaUnavailableError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula in a specific tap is unreadable.
|
||||
class TapFormulaUnreadableError < TapFormulaUnavailableError
|
||||
include FormulaUnreadableErrorModule
|
||||
|
||||
@ -174,6 +194,7 @@ class TapFormulaUnreadableError < TapFormulaUnavailableError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula with the same name is found multiple taps.
|
||||
class TapFormulaAmbiguityError < RuntimeError
|
||||
attr_reader :name, :paths, :formulae
|
||||
|
||||
@ -192,6 +213,7 @@ class TapFormulaAmbiguityError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula's old name in a specific tap is found in multiple taps.
|
||||
class TapFormulaWithOldnameAmbiguityError < RuntimeError
|
||||
attr_reader :name, :possible_tap_newname_formulae, :taps
|
||||
|
||||
@ -212,6 +234,7 @@ class TapFormulaWithOldnameAmbiguityError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a tap is unavailable.
|
||||
class TapUnavailableError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
@ -224,6 +247,7 @@ class TapUnavailableError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a tap's remote does not match the actual remote.
|
||||
class TapRemoteMismatchError < RuntimeError
|
||||
attr_reader :name, :expected_remote, :actual_remote
|
||||
|
||||
@ -239,6 +263,7 @@ class TapRemoteMismatchError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a tap is already installed.
|
||||
class TapAlreadyTappedError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
@ -251,6 +276,7 @@ class TapAlreadyTappedError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when another Homebrew operation is already in progress.
|
||||
class OperationInProgressError < RuntimeError
|
||||
def initialize(name)
|
||||
message = <<~EOS
|
||||
@ -265,12 +291,14 @@ end
|
||||
|
||||
class CannotInstallFormulaError < RuntimeError; end
|
||||
|
||||
# Raised when a formula installation was already attempted.
|
||||
class FormulaInstallationAlreadyAttemptedError < RuntimeError
|
||||
def initialize(formula)
|
||||
super "Formula installation already attempted: #{formula.full_name}"
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when there are unsatisfied requirements.
|
||||
class UnsatisfiedRequirements < RuntimeError
|
||||
def initialize(reqs)
|
||||
if reqs.length == 1
|
||||
@ -281,6 +309,7 @@ class UnsatisfiedRequirements < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a formula conflicts with another one.
|
||||
class FormulaConflictError < RuntimeError
|
||||
attr_reader :formula, :conflicts
|
||||
|
||||
@ -313,6 +342,7 @@ class FormulaConflictError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raise when the Python version cannot be detected automatically.
|
||||
class FormulaUnknownPythonError < RuntimeError
|
||||
def initialize(formula)
|
||||
super <<~EOS
|
||||
@ -325,6 +355,7 @@ class FormulaUnknownPythonError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raise when two Python versions are detected simultaneously.
|
||||
class FormulaAmbiguousPythonError < RuntimeError
|
||||
def initialize(formula)
|
||||
super <<~EOS
|
||||
@ -336,6 +367,7 @@ class FormulaAmbiguousPythonError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when an error occurs during a formula build.
|
||||
class BuildError < RuntimeError
|
||||
attr_reader :cmd, :args, :env
|
||||
attr_accessor :formula, :options
|
||||
@ -561,12 +593,14 @@ class ChecksumMismatchError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a resource is missing.
|
||||
class ResourceMissingError < ArgumentError
|
||||
def initialize(formula, resource)
|
||||
super "#{formula.full_name} does not define resource #{resource.inspect}"
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a resource is specified multiple times.
|
||||
class DuplicateResourceError < ArgumentError
|
||||
def initialize(resource)
|
||||
super "Resource #{resource.inspect} is defined more than once"
|
||||
@ -576,6 +610,7 @@ end
|
||||
# Raised when a single patch file is not found and apply hasn't been specified.
|
||||
class MissingApplyError < RuntimeError; end
|
||||
|
||||
# Raised when a bottle does not contain a formula file.
|
||||
class BottleFormulaUnavailableError < RuntimeError
|
||||
def initialize(bottle_path, formula_path)
|
||||
super <<~EOS
|
||||
@ -604,6 +639,7 @@ class ChildProcessError < RuntimeError
|
||||
end
|
||||
end
|
||||
|
||||
# Raised when a macOS version is unsupported.
|
||||
class MacOSVersionError < RuntimeError
|
||||
attr_reader :version
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user