Class: Bundler::CompactIndexClient::Cache
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/bundler/compact_index_client/cache.rb |
Class Method Summary
- .new(directory) ⇒ Cache constructor
Instance Attribute Summary
- #directory readonly
Instance Method Summary
- #checksums
- #dependencies(name)
- #info_etag_path(name)
- #info_path(name)
- #names
- #names_etag_path
- #names_path
- #versions
- #versions_etag_path
- #versions_path
- #info_etag_root private
- #info_roots private
- #lines(path) private
- #mkdir(dir) private
- #parse_gem(line) private
Constructor Details
.new(directory) ⇒ Cache
# File 'lib/bundler/compact_index_client/cache.rb', line 10
def initialize(directory) @directory = Pathname.new(directory). info_roots.each {|dir| mkdir(dir) } mkdir(info_etag_root) end
Instance Attribute Details
#directory (readonly)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 8
attr_reader :directory
Instance Method Details
#checksums
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 57
def checksums checksums = {} lines(versions_path).each do |line| name, _, checksum = line.split(" ", 3) checksums[name] = checksum end checksums end
#dependencies(name)
[ GitHub ]#info_etag_path(name)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 84
def info_etag_path(name) name = name.to_s info_etag_root.join("#{name}-#{SharedHelpers.digest(:MD5).hexdigest(name).downcase}") end
#info_etag_root (private)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 116
def info_etag_root directory.join("info-etags") end
#info_path(name)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 74
def info_path(name) name = name.to_s if /[^a-z0-9_-]/.match?(name) name += "-#{SharedHelpers.digest(:MD5).hexdigest(name).downcase}" info_roots.last.join(name) else info_roots.first.join(name) end end
#info_roots (private)
[ GitHub ]#lines(path) (private)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 97
def lines(path) return [] unless path.file? lines = SharedHelpers.filesystem_access(path, :read, &:read).split("\n") header = lines.index("---") header ? lines[header + 1..-1] : lines end
#mkdir(dir) (private)
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 91
def mkdir(dir) SharedHelpers.filesystem_access(dir) do FileUtils.mkdir_p(dir) end end
#names
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 16
def names lines(names_path) end
#names_etag_path
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 24
def names_etag_path directory.join("names.etag") end
#names_path
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 20
def names_path directory.join("names") end
#parse_gem(line) (private)
[ GitHub ]#versions
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 28
def versions versions_by_name = Hash.new {|hash, key| hash[key] = [] } info_checksums_by_name = {} lines(versions_path).each do |line| name, versions_string, info_checksum = line.split(" ", 3) info_checksums_by_name[name] = info_checksum || "" versions_string.split(",") do |version| delete = version.delete_prefix!("-") version = version.split("-", 2).unshift(name) if delete versions_by_name[name].delete(version) else versions_by_name[name] << version end end end [versions_by_name, info_checksums_by_name] end
#versions_etag_path
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 53
def versions_etag_path directory.join("versions.etag") end
#versions_path
[ GitHub ]# File 'lib/bundler/compact_index_client/cache.rb', line 49
def versions_path directory.join("versions") end