aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/lib/hbc/exceptions.rb
diff options
context:
space:
mode:
authorAnastasiaSulyagina2016-08-18 22:11:42 +0300
committerAnastasiaSulyagina2016-08-19 14:50:14 +0300
commite81f4ab7deeb40308f240be5ea00091fc8786d7a (patch)
treeb5418f9149de71c0f05f90cb2b39ab47f46e27b4 /Library/Homebrew/cask/lib/hbc/exceptions.rb
parent5c7c9de669025bbe4cad9829be39c5cf3b31ad25 (diff)
downloadbrew-e81f4ab7deeb40308f240be5ea00091fc8786d7a.tar.bz2
init
Diffstat (limited to 'Library/Homebrew/cask/lib/hbc/exceptions.rb')
-rw-r--r--Library/Homebrew/cask/lib/hbc/exceptions.rb146
1 files changed, 146 insertions, 0 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/exceptions.rb b/Library/Homebrew/cask/lib/hbc/exceptions.rb
new file mode 100644
index 000000000..8813aaedf
--- /dev/null
+++ b/Library/Homebrew/cask/lib/hbc/exceptions.rb
@@ -0,0 +1,146 @@
+class Hbc::CaskError < RuntimeError; end
+
+class Hbc::AbstractCaskErrorWithToken < Hbc::CaskError
+ attr_reader :token
+
+ def initialize(token)
+ @token = token
+ end
+end
+
+class Hbc::CaskNotInstalledError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ "#{token} is not installed"
+ end
+end
+
+class Hbc::CaskUnavailableError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ "No available Cask for #{token}"
+ end
+end
+
+class Hbc::CaskAlreadyCreatedError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ %Q{A Cask for #{token} already exists. Run "brew cask cat #{token}" to see it.}
+ end
+end
+
+class Hbc::CaskAlreadyInstalledError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ %Q{A Cask for #{token} is already installed. Add the "--force" option to force re-install.}
+ end
+end
+
+class Hbc::CaskAutoUpdatesError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ %Q{A Cask for #{token} is already installed and using auto-updates. Add the "--force" option to force re-install.}
+ end
+end
+
+class Hbc::CaskCommandFailedError < Hbc::CaskError
+ def initialize(cmd, stdout, stderr, status)
+ @cmd = cmd
+ @stdout = stdout
+ @stderr = stderr
+ @status = status
+ end
+
+ def to_s
+ <<-EOS
+Command failed to execute!
+
+==> Failed command:
+#{@cmd}
+
+==> Standard Output of failed command:
+#{@stdout}
+
+==> Standard Error of failed command:
+#{@stderr}
+
+==> Exit status of failed command:
+#{@status.inspect}
+ EOS
+ end
+end
+
+class Hbc::CaskX11DependencyError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ <<-EOS.undent
+ #{token} requires XQuartz/X11, which can be installed via homebrew-cask by
+
+ brew cask install xquartz
+
+ or manually, by downloading the package from
+
+ https://www.xquartz.org/
+ EOS
+ end
+end
+
+class Hbc::CaskCyclicCaskDependencyError < Hbc::AbstractCaskErrorWithToken
+ def to_s
+ "Cask '#{token}' includes cyclic dependencies on other Casks and could not be installed."
+ end
+end
+
+class Hbc::CaskUnspecifiedError < Hbc::CaskError
+ def to_s
+ "This command requires a Cask token"
+ end
+end
+
+class Hbc::CaskInvalidError < Hbc::AbstractCaskErrorWithToken
+ attr_reader :submsg
+ def initialize(token, *submsg)
+ super(token)
+ @submsg = submsg.join(" ")
+ end
+
+ def to_s
+ "Cask '#{token}' definition is invalid" + (!submsg.empty? ? ": #{submsg}" : "")
+ end
+end
+
+class Hbc::CaskTokenDoesNotMatchError < Hbc::CaskInvalidError
+ def initialize(token, header_token)
+ super(token, "Bad header line: '#{header_token}' does not match file name")
+ end
+end
+
+class Hbc::CaskSha256MissingError < ArgumentError
+end
+
+class Hbc::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
+end
+
+class Hbc::CaskNoShasumError < Hbc::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
+end