Document cask exceptions.

This commit is contained in:
Markus Reiter 2020-08-24 23:31:55 +02:00
parent 5d6c682f81
commit b582efceaa

View File

@ -1,8 +1,14 @@
# frozen_string_literal: true # frozen_string_literal: true
module Cask module Cask
# General cask error.
#
# @api private
class CaskError < RuntimeError; end class CaskError < RuntimeError; end
# Cask error containing multiple other errors.
#
# @api private
class MultipleCaskErrors < CaskError class MultipleCaskErrors < CaskError
def initialize(errors) def initialize(errors)
super() super()
@ -18,6 +24,9 @@ module Cask
end end
end end
# Abstract cask error containing a cask token.
#
# @api private
class AbstractCaskErrorWithToken < CaskError class AbstractCaskErrorWithToken < CaskError
attr_reader :token, :reason attr_reader :token, :reason
@ -29,12 +38,18 @@ module Cask
end end
end end
# Error when a cask is not installed.
#
# @api private
class CaskNotInstalledError < AbstractCaskErrorWithToken class CaskNotInstalledError < AbstractCaskErrorWithToken
def to_s def to_s
"Cask '#{token}' is not installed." "Cask '#{token}' is not installed."
end end
end end
# Error when a cask conflicts with another cask.
#
# @api private
class CaskConflictError < AbstractCaskErrorWithToken class CaskConflictError < AbstractCaskErrorWithToken
attr_reader :conflicting_cask attr_reader :conflicting_cask
@ -48,24 +63,36 @@ module Cask
end end
end end
# Error when a cask is not available.
#
# @api private
class CaskUnavailableError < AbstractCaskErrorWithToken class CaskUnavailableError < AbstractCaskErrorWithToken
def to_s def to_s
"Cask '#{token}' is unavailable#{reason.empty? ? "." : ": #{reason}"}" "Cask '#{token}' is unavailable#{reason.empty? ? "." : ": #{reason}"}"
end end
end end
# Error when a cask is unreadable.
#
# @api private
class CaskUnreadableError < CaskUnavailableError class CaskUnreadableError < CaskUnavailableError
def to_s def to_s
"Cask '#{token}' is unreadable#{reason.empty? ? "." : ": #{reason}"}" "Cask '#{token}' is unreadable#{reason.empty? ? "." : ": #{reason}"}"
end end
end end
# Error when a cask already exists.
#
# @api private
class CaskAlreadyCreatedError < AbstractCaskErrorWithToken class CaskAlreadyCreatedError < AbstractCaskErrorWithToken
def to_s def to_s
%Q(Cask '#{token}' already exists. Run #{Formatter.identifier("brew cask edit #{token}")} to edit it.) %Q(Cask '#{token}' already exists. Run #{Formatter.identifier("brew cask edit #{token}")} to edit it.)
end end
end end
# Error when a cask is already installed.
#
# @api private
class CaskAlreadyInstalledError < AbstractCaskErrorWithToken class CaskAlreadyInstalledError < AbstractCaskErrorWithToken
def to_s def to_s
<<~EOS <<~EOS
@ -77,6 +104,9 @@ module Cask
end end
end end
# Error when a cask depends on X11.
#
# @api private
class CaskX11DependencyError < AbstractCaskErrorWithToken class CaskX11DependencyError < AbstractCaskErrorWithToken
def to_s def to_s
<<~EOS <<~EOS
@ -89,36 +119,54 @@ module Cask
end end
end end
# Error when there is a cyclic cask dependency.
#
# @api private
class CaskCyclicDependencyError < AbstractCaskErrorWithToken class CaskCyclicDependencyError < AbstractCaskErrorWithToken
def to_s def to_s
"Cask '#{token}' includes cyclic dependencies on other Casks#{reason.empty? ? "." : ": #{reason}"}" "Cask '#{token}' includes cyclic dependencies on other Casks#{reason.empty? ? "." : ": #{reason}"}"
end end
end end
# Error when a cask depends on itself.
#
# @api private
class CaskSelfReferencingDependencyError < CaskCyclicDependencyError class CaskSelfReferencingDependencyError < CaskCyclicDependencyError
def to_s def to_s
"Cask '#{token}' depends on itself." "Cask '#{token}' depends on itself."
end end
end end
# Error when no cask is specified.
#
# @api private
class CaskUnspecifiedError < CaskError class CaskUnspecifiedError < CaskError
def to_s def to_s
"This command requires a Cask token." "This command requires a Cask token."
end end
end end
# Error when a cask is invalid.
#
# @api private
class CaskInvalidError < AbstractCaskErrorWithToken class CaskInvalidError < AbstractCaskErrorWithToken
def to_s def to_s
"Cask '#{token}' definition is invalid#{reason.empty? ? "." : ": #{reason}"}" "Cask '#{token}' definition is invalid#{reason.empty? ? "." : ": #{reason}"}"
end end
end end
# Error when a cask token does not match the file name.
#
# @api private
class CaskTokenMismatchError < CaskInvalidError class CaskTokenMismatchError < CaskInvalidError
def initialize(token, header_token) def initialize(token, header_token)
super(token, "Token '#{header_token}' in header line does not match the file name.") super(token, "Token '#{header_token}' in header line does not match the file name.")
end end
end end
# Error with a cask's checksum.
#
# @api private
class CaskSha256Error < AbstractCaskErrorWithToken class CaskSha256Error < AbstractCaskErrorWithToken
attr_reader :expected, :actual attr_reader :expected, :actual
@ -129,6 +177,9 @@ module Cask
end end
end end
# Error when a cask's checksum is missing.
#
# @api private
class CaskSha256MissingError < CaskSha256Error class CaskSha256MissingError < CaskSha256Error
def to_s def to_s
<<~EOS <<~EOS
@ -138,6 +189,9 @@ module Cask
end end
end end
# Error when a cask's checksum does not match.
#
# @api private
class CaskSha256MismatchError < CaskSha256Error class CaskSha256MismatchError < CaskSha256Error
attr_reader :path attr_reader :path
@ -159,6 +213,9 @@ module Cask
end end
end end
# Error when a cask has no checksum and the `--require-sha` flag is passed.
#
# @api private
class CaskNoShasumError < CaskSha256Error class CaskNoShasumError < CaskSha256Error
def to_s def to_s
<<~EOS <<~EOS
@ -168,6 +225,9 @@ module Cask
end end
end end
# Error during quarantining of a file.
#
# @api private
class CaskQuarantineError < CaskError class CaskQuarantineError < CaskError
attr_reader :path, :reason attr_reader :path, :reason
@ -191,6 +251,9 @@ module Cask
end end
end end
# Error while propagating quarantine information to subdirectories.
#
# @api private
class CaskQuarantinePropagationError < CaskQuarantineError class CaskQuarantinePropagationError < CaskQuarantineError
def to_s def to_s
s = +"Failed to quarantine one or more files within #{path}." s = +"Failed to quarantine one or more files within #{path}."
@ -205,6 +268,9 @@ module Cask
end end
end end
# Error while removing quarantine information.
#
# @api private
class CaskQuarantineReleaseError < CaskQuarantineError class CaskQuarantineReleaseError < CaskQuarantineError
def to_s def to_s
s = +"Failed to release #{path} from quarantine." s = +"Failed to release #{path} from quarantine."