Sha256: 522f14fc9ed885f3223e57e80c5bcc31ccc21844489bb6b4737fd5d7c5914c4b
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
module Jets::Gems class Exist def initialize(options) @options = options end # We check all the availability before even downloading so we can provide a # full list of gems they might want to research all at once instead of incrementally # # Examples: # # check(single_gem) # check(list, of, gems) def check(*gem_names) gem_names = gem_names.flatten exists = gem_names.inject({}) do |hash, gem_name| exist = url_exists?(gem_url(gem_name)) hash[gem_name] = exist hash.merge(hash) end exists.values.all? {|v| v } # all_exist end # Example url: # https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz def url_exists?(url) url = URI.parse(url) req = Net::HTTP.new(url.host, url.port).tap do |http| http.use_ssl = true end res = req.request_head(url.path) res.code == "200" rescue SocketError, OpenURI::HTTPError false end def source_url @options[:source_url] || s3_url end # gem_name: byebug-9.1.0 # Example url: # https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz def gem_url(gem_name) folder = gem_name.gsub(/-(\d+\.\d+\.\d+.*)/,'') # folder: byebug "#{source_url}/gems/#{Jets::Gems.ruby_version_folder}/#{folder}/#{gem_name}-x86_64-linux.tgz" end def ruby_version_folder Jets::Gems.ruby_version_folder end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jets-1.0.4 | vendor/jets-gems/lib/jets/gems/exist.rb |
jets-1.0.3 | vendor/jets-gems/lib/jets/gems/exist.rb |
jets-1.0.2 | vendor/jets-gems/lib/jets/gems/exist.rb |