147 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			147 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | 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 |