Use classes instead of strings for exceptions
This commit is contained in:
parent
dbd7f1c855
commit
560408d01b
@ -2,6 +2,24 @@ class UsageError <RuntimeError; end
|
||||
class FormulaUnspecifiedError <UsageError; end
|
||||
class KegUnspecifiedError <UsageError; end
|
||||
|
||||
class MultipleVersionsInstalledError <RuntimeError
|
||||
attr :name
|
||||
|
||||
def initialize name
|
||||
@name = name
|
||||
super "#{name} has multiple installed versions"
|
||||
end
|
||||
end
|
||||
|
||||
class NoSuchKegError <RuntimeError
|
||||
attr :name
|
||||
|
||||
def initialize name
|
||||
@name = name
|
||||
super "No such keg: #{HOMEBREW_CELLAR}/#{name}"
|
||||
end
|
||||
end
|
||||
|
||||
module HomebrewArgvExtension
|
||||
def named
|
||||
@named ||= reject{|arg| arg[0..0] == '-'}
|
||||
@ -24,8 +42,8 @@ module HomebrewArgvExtension
|
||||
@kegs ||= downcased_unique_named.collect do |name|
|
||||
d = HOMEBREW_CELLAR + Formula.resolve_alias(name)
|
||||
dirs = d.children.select{ |pn| pn.directory? } rescue []
|
||||
raise "No such keg: #{HOMEBREW_CELLAR}/#{name}" if not d.directory? or dirs.length == 0
|
||||
raise "#{name} has multiple installed versions" if dirs.length > 1
|
||||
raise NoSuchKegError.new(name) if not d.directory? or dirs.length == 0
|
||||
raise MultipleVersionsInstalledError.new(name) if dirs.length > 1
|
||||
Keg.new dirs.first
|
||||
end
|
||||
raise KegUnspecifiedError if @kegs.empty?
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user