diff options
| author | Adam Vandenberg | 2010-10-17 17:21:03 -0700 | 
|---|---|---|
| committer | Adam Vandenberg | 2010-10-17 17:21:21 -0700 | 
| commit | f67b79c3e1c4f8066d4590fcc2808cd37df60866 (patch) | |
| tree | c54ab448b70015e01a06cce587483fbea83bb054 | |
| parent | dd2cedcf29e405f76838fe02af0739b390710af0 (diff) | |
| download | homebrew-f67b79c3e1c4f8066d4590fcc2808cd37df60866.tar.bz2 | |
Use classes instead of strings for exceptions
| -rw-r--r-- | Library/Homebrew/extend/ARGV.rb | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index 9c6aaf1f0..a4189e73b 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -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? | 
