Class: Bundler::CompactIndexClient::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory) ⇒ Cache

Returns a new instance of Cache.



6
7
8
9
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 6

def initialize(directory)
  @directory = Pathname.new(directory).expand_path
  FileUtils.mkdir_p info_path(nil)
end

Instance Attribute Details

#directoryObject (readonly)

Returns the value of attribute directory.



4
5
6
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 4

def directory
  @directory
end

Instance Method Details

#checksumsObject



44
45
46
47
48
49
50
51
52
53
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 44

def checksums
  checksums = {}

  lines(versions_path).each do |line|
    name, _, checksum = line.split(" ", 3)
    checksums[name] = checksum
  end

  checksums
end

#dependencies(name) ⇒ Object



55
56
57
58
59
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 55

def dependencies(name)
  lines(info_path(name)).map do |line|
    parse_gem(line)
  end
end

#info_path(name) ⇒ Object



61
62
63
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 61

def info_path(name)
  directory.join("info", name.to_s)
end

#namesObject



11
12
13
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 11

def names
  lines(names_path)
end

#names_pathObject



15
16
17
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 15

def names_path
  directory.join("names")
end

#specific_dependency(name, version, platform) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 65

def specific_dependency(name, version, platform)
  pattern = [version, platform].compact.join("-")
  return nil if pattern.empty?

  gem_lines = info_path(name).read
  gem_line = gem_lines[/^#{Regexp.escape(pattern)}\b.*/, 0]
  gem_line ? parse_gem(gem_line) : nil
end

#versionsObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 19

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(",").each do |version|
      if version.start_with?("-")
        version = version[1..-1].split("-", 2).unshift(name)
        versions_by_name[name].delete(version)
      else
        version = version.split("-", 2).unshift(name)
        versions_by_name[name] << version
      end
    end
  end

  [versions_by_name, info_checksums_by_name]
end

#versions_pathObject



40
41
42
# File 'lib/bundler/vendor/compact_index_client/lib/compact_index_client/cache.rb', line 40

def versions_path
  directory.join("versions")
end