Newer
Older
module Hbc
class CaskError < RuntimeError; end
class AbstractCaskErrorWithToken < CaskError
attr_reader :token
def initialize(token)
@token = token
end
class CaskNotInstalledError < AbstractCaskErrorWithToken
def to_s
"#{token} is not installed"
end
class CaskUnavailableError < AbstractCaskErrorWithToken
def to_s
"No available Cask for #{token}"
end
class CaskAlreadyCreatedError < AbstractCaskErrorWithToken
def to_s
%Q(A Cask for #{token} already exists. Run "brew cask cat #{token}" to see it.)
class CaskAlreadyInstalledError < AbstractCaskErrorWithToken
def to_s
s = <<-EOS.undent
A Cask for #{token} is already installed.
EOS
s.concat("\n").concat(reinstall_message)
end
private
def reinstall_message
<<-EOS.undent
To re-install #{token}, run:
brew cask reinstall #{token}
class CaskAlreadyInstalledAutoUpdatesError < CaskAlreadyInstalledError
s = <<-EOS.undent
A Cask for #{token} is already installed and using auto-updates.
EOS
s.concat("\n").concat(reinstall_message)
class CaskCommandFailedError < CaskError
def initialize(cmd, stdout, stderr, status)
@cmd = cmd
@stdout = stdout
@stderr = stderr
@status = status
end
s = "Command failed to execute!\n"
s.concat("\n")
s.concat("==> Failed command:\n")
s.concat("\n")
s.concat("==> Standard Output of failed command:\n")
s.concat(@stdout).concat("\n")
s.concat("\n")
s.concat("==> Standard Error of failed command:\n")
s.concat(@stderr).concat("\n")
s.concat("\n")
s.concat("==> Exit status of failed command:\n")
s.concat(@status.inspect).concat("\n")
class CaskX11DependencyError < AbstractCaskErrorWithToken
def to_s
<<-EOS.undent
#{token} requires XQuartz/X11, which can be installed using Homebrew-Cask by running
or manually, by downloading the package from
#{Formatter.url("https://www.xquartz.org/")}
class CaskCyclicCaskDependencyError < AbstractCaskErrorWithToken
def to_s
"Cask '#{token}' includes cyclic dependencies on other Casks and could not be installed."
end
class CaskUnspecifiedError < CaskError
def to_s
"This command requires a Cask token"
end
class CaskInvalidError < AbstractCaskErrorWithToken
attr_reader :submsg
def initialize(token, *submsg)
super(token)
@submsg = submsg.join(" ")
end
"Cask '#{token}' definition is invalid#{": #{submsg}" unless submsg.empty?}"
class CaskTokenDoesNotMatchError < CaskInvalidError
def initialize(token, header_token)
super(token, "Bad header line: '#{header_token}' does not match file name")
end
class CaskSha256MissingError < ArgumentError
class CaskSha256MismatchError < RuntimeError
attr_reader :path, :expected, :actual
def initialize(path, expected, actual)
@path = path
@expected = expected
@actual = actual
end
def to_s
<<-EOS.undent
sha256 mismatch
Expected: #{expected}
Actual: #{actual}
File: #{path}
To retry an incomplete download, remove the file above.
EOS
end
class CaskNoShasumError < CaskError
attr_reader :token
def initialize(token)
@token = token
end
def to_s
<<-EOS.undent
Cask '#{token}' does not have a sha256 checksum defined and was not installed.
This means you have the "--require-sha" option set, perhaps in your HOMEBREW_CASK_OPTS.
EOS
end