strip various exception classes from homebrew-fork
This commit is contained in:
parent
f783c8aafe
commit
5108254e9f
|
@ -1,203 +1,3 @@
|
|||
class UsageError < RuntimeError; end
|
||||
class FormulaUnspecifiedError < UsageError; end
|
||||
class KegUnspecifiedError < UsageError; end
|
||||
|
||||
class MultipleVersionsInstalledError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
def initialize name
|
||||
@name = name
|
||||
super "#{name} has multiple installed versions"
|
||||
end
|
||||
end
|
||||
|
||||
class NotAKegError < RuntimeError; end
|
||||
|
||||
class NoSuchKegError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
def initialize name
|
||||
@name = name
|
||||
super "No such keg: #{HOMEBREW_CELLAR}/#{name}"
|
||||
end
|
||||
end
|
||||
|
||||
class FormulaValidationError < StandardError
|
||||
attr_reader :attr
|
||||
|
||||
def initialize(attr, value)
|
||||
@attr = attr
|
||||
msg = "invalid attribute: #{attr}"
|
||||
msg << " (#{value.inspect})" unless value.empty?
|
||||
super msg
|
||||
end
|
||||
end
|
||||
|
||||
class FormulaSpecificationError < StandardError; end
|
||||
|
||||
class FormulaUnavailableError < RuntimeError
|
||||
attr_reader :name
|
||||
|
||||
def initialize name
|
||||
@name = name
|
||||
end
|
||||
|
||||
def to_s
|
||||
"No available formula for #{name}"
|
||||
end
|
||||
end
|
||||
|
||||
class TapFormulaUnavailableError < FormulaUnavailableError
|
||||
attr_reader :user, :repo, :shortname
|
||||
|
||||
def initialize name
|
||||
super
|
||||
@user, @repo, @shortname = name.split("/", 3)
|
||||
end
|
||||
|
||||
def to_s; <<-EOS.undent
|
||||
No available formula for #{shortname}
|
||||
Please tap it and then try again: brew tap #{user}/#{repo}
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
class OperationInProgressError < RuntimeError
|
||||
def initialize name
|
||||
message = <<-EOS.undent
|
||||
Operation already in progress for #{name}
|
||||
Another active Homebrew process is already using #{name}.
|
||||
Please wait for it to finish or terminate it to continue.
|
||||
EOS
|
||||
|
||||
super message
|
||||
end
|
||||
end
|
||||
|
||||
class CannotInstallFormulaError < RuntimeError; end
|
||||
|
||||
class FormulaAlreadyInstalledError < RuntimeError; end
|
||||
|
||||
class FormulaInstallationAlreadyAttemptedError < RuntimeError
|
||||
def initialize(formula)
|
||||
super "Formula installation already attempted: #{formula.name}"
|
||||
end
|
||||
end
|
||||
|
||||
class FormulaConflictError < RuntimeError
|
||||
attr_reader :formula, :conflicts
|
||||
|
||||
def initialize(formula, conflicts)
|
||||
@formula = formula
|
||||
@conflicts = conflicts
|
||||
super message
|
||||
end
|
||||
|
||||
def conflict_message(conflict)
|
||||
message = []
|
||||
message << " #{conflict.name}"
|
||||
message << ": because #{conflict.reason}" if conflict.reason
|
||||
message.join
|
||||
end
|
||||
|
||||
def message
|
||||
message = []
|
||||
message << "Cannot install #{formula.name} because conflicting formulae are installed.\n"
|
||||
message.concat conflicts.map { |c| conflict_message(c) } << ""
|
||||
message << <<-EOS.undent
|
||||
Please `brew unlink #{conflicts.map(&:name)*' '}` before continuing.
|
||||
|
||||
Unlinking removes a formula's symlinks from #{HOMEBREW_PREFIX}. You can
|
||||
link the formula again after the install finishes. You can --force this
|
||||
install, but the build may fail or cause obscure side-effects in the
|
||||
resulting software.
|
||||
EOS
|
||||
message.join("\n")
|
||||
end
|
||||
end
|
||||
|
||||
class BuildError < RuntimeError
|
||||
attr_reader :formula, :env
|
||||
|
||||
def initialize(formula, cmd, args, env)
|
||||
@formula = formula
|
||||
@env = env
|
||||
args = args.map{ |arg| arg.to_s.gsub " ", "\\ " }.join(" ")
|
||||
super "Failed executing: #{cmd} #{args}"
|
||||
end
|
||||
|
||||
def issues
|
||||
@issues ||= fetch_issues
|
||||
end
|
||||
|
||||
def fetch_issues
|
||||
GitHub.issues_for_formula(formula.name)
|
||||
rescue GitHub::RateLimitExceededError => e
|
||||
opoo e.message
|
||||
[]
|
||||
end
|
||||
|
||||
def dump
|
||||
if not ARGV.verbose?
|
||||
puts
|
||||
puts "#{Tty.red}READ THIS#{Tty.reset}: #{Tty.em}#{OS::ISSUES_URL}#{Tty.reset}"
|
||||
if formula.tap?
|
||||
puts "If reporting this issue please do so at (not Homebrew/homebrew):"
|
||||
puts " https://github.com/#{formula.tap}/issues"
|
||||
end
|
||||
else
|
||||
require 'cmd/config'
|
||||
require 'cmd/--env'
|
||||
|
||||
unless formula.core_formula?
|
||||
ohai "Formula"
|
||||
puts "Tap: #{formula.tap}"
|
||||
puts "Path: #{formula.path}"
|
||||
end
|
||||
ohai "Configuration"
|
||||
Homebrew.dump_build_config
|
||||
ohai "ENV"
|
||||
Homebrew.dump_build_env(env)
|
||||
puts
|
||||
onoe "#{formula.name} #{formula.version} did not build"
|
||||
unless (logs = Dir["#{HOMEBREW_LOGS}/#{formula.name}/*"]).empty?
|
||||
puts "Logs:"
|
||||
puts logs.map{|fn| " #{fn}"}.join("\n")
|
||||
end
|
||||
end
|
||||
puts
|
||||
unless RUBY_VERSION < "1.8.7" || issues.empty?
|
||||
puts "These open issues may also help:"
|
||||
puts issues.map{ |i| "#{i['title']} (#{i['html_url']})" }.join("\n")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# raised by CompilerSelector if the formula fails with all of
|
||||
# the compilers available on the user's system
|
||||
class CompilerSelectionError < RuntimeError
|
||||
def initialize(formula)
|
||||
super <<-EOS.undent
|
||||
#{formula.name} cannot be built with any available compilers.
|
||||
To install this formula, you may need to:
|
||||
brew install gcc
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
# Raised in Resource.fetch
|
||||
class DownloadError < RuntimeError
|
||||
def initialize(resource, e)
|
||||
super <<-EOS.undent
|
||||
Failed to download resource #{resource.download_name.inspect}
|
||||
#{e.message}
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
# raised in CurlDownloadStrategy.fetch
|
||||
class CurlDownloadStrategyError < RuntimeError; end
|
||||
|
||||
# raised by safe_system in utils.rb
|
||||
class ErrorDuringExecution < RuntimeError
|
||||
def initialize(cmd, args=[])
|
||||
|
@ -206,6 +6,9 @@ class ErrorDuringExecution < RuntimeError
|
|||
end
|
||||
end
|
||||
|
||||
# raised in CurlDownloadStrategy.fetch
|
||||
class CurlDownloadStrategyError < RuntimeError; end
|
||||
|
||||
# raised by Pathname#verify_checksum when "expected" is nil or empty
|
||||
class ChecksumMissingError < ArgumentError; end
|
||||
|
||||
|
@ -226,15 +29,3 @@ class ChecksumMismatchError < RuntimeError
|
|||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
class ResourceMissingError < ArgumentError
|
||||
def initialize(formula, resource)
|
||||
super "#{formula.name} does not define resource #{resource.inspect}"
|
||||
end
|
||||
end
|
||||
|
||||
class DuplicateResourceError < ArgumentError
|
||||
def initialize(resource)
|
||||
super "Resource #{resource.inspect} is defined more than once"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -24,7 +24,7 @@ module HomebrewArgvExtension
|
|||
rack = HOMEBREW_CELLAR/canonical_name
|
||||
dirs = rack.directory? ? rack.subdirs : []
|
||||
|
||||
raise NoSuchKegError.new(canonical_name) if dirs.empty?
|
||||
raise RuntimeError.new(canonical_name) if dirs.empty?
|
||||
|
||||
linked_keg_ref = HOMEBREW_LIBRARY.join("LinkedKegs", canonical_name)
|
||||
opt_prefix = HOMEBREW_PREFIX.join("opt", canonical_name)
|
||||
|
@ -39,9 +39,9 @@ module HomebrewArgvExtension
|
|||
elsif (prefix = Formulary.factory(canonical_name).prefix).directory?
|
||||
Keg.new(prefix)
|
||||
else
|
||||
raise MultipleVersionsInstalledError.new(canonical_name)
|
||||
raise RuntimeError.new(canonical_name)
|
||||
end
|
||||
rescue FormulaUnavailableError
|
||||
rescue RuntimeError
|
||||
raise <<-EOS.undent
|
||||
Multiple kegs installed to #{rack}
|
||||
However we don't know which one you refer to.
|
||||
|
@ -56,7 +56,7 @@ module HomebrewArgvExtension
|
|||
@n=index arg
|
||||
end
|
||||
def next
|
||||
at @n+1 or raise UsageError
|
||||
at @n+1 or raise RuntimeError
|
||||
end
|
||||
|
||||
def value arg
|
||||
|
|
|
@ -158,7 +158,7 @@ module SharedEnvExtension
|
|||
brew install #{gcc_name}
|
||||
EOS
|
||||
end
|
||||
rescue FormulaUnavailableError
|
||||
rescue RuntimeError
|
||||
raise <<-EOS.undent
|
||||
Homebrew GCC requested, but formula #{gcc_name} not found!
|
||||
You may need to: brew tap homebrew/versions
|
||||
|
|
|
@ -83,7 +83,7 @@ class Resource
|
|||
HOMEBREW_CACHE.mkpath
|
||||
downloader.fetch
|
||||
rescue ErrorDuringExecution, CurlDownloadStrategyError => e
|
||||
raise DownloadError.new(self, e)
|
||||
raise RuntimeError.new
|
||||
else
|
||||
cached_download
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue