module GeminaboxClient::GemLocator

Constants

NO_GEM_PROVIDED_ERROR_MESSAGE

Public Instance Methods

find_gem(dir) click to toggle source
# File lib/geminabox_client.rb, line 41
def find_gem(dir)
  gemname = File.split(dir).last
  glob_matcher = "{pkg/,}#{gemname}-*.gem"
  latest_gem_for(gemname, Dir.glob(glob_matcher)) or raise Gem::CommandLineError, NO_GEM_PROVIDED_ERROR_MESSAGE
end
latest_gem_for(gemname, files) click to toggle source
# File lib/geminabox_client.rb, line 47
def latest_gem_for(gemname, files)
  regexp_matcher = %r{(?:pkg/)#{gemname}-(#{Gem::Version::VERSION_PATTERN})\.gem}
  sorter = lambda{|v| Gem::Version.new(regexp_matcher.match(v)[1]) }
  files.grep(regexp_matcher).max_by(&sorter)
end