module GeminaboxClient::GemLocator
def find_gem(dir)
def find_gem(dir) gemspec_path = Dir.glob(File.join(dir, "*.gemspec")).first gemspec = Gem::Specification::load(gemspec_path) gemname = gemspec.name glob_matcher = "{pkg/,}#{gemname}-*.gem" latest_gem_for(gemname, Dir.glob(glob_matcher)) or raise Gem::CommandLineError, NO_GEM_PROVIDED_ERROR_MESSAGE end
def latest_gem_for(gemname, files)
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