Class: LinkageCacheStore

Inherits:
CacheStore show all
Defined in:
Library/Homebrew/linkage_cache_store.rb

Overview

LinkageCacheStore provides methods to fetch and mutate linkage-specific data used by the brew linkage command.

Instance Method Summary collapse

Constructor Details

#initialize(keg_path, database) ⇒ nil

Parameters:


15
16
17
18
# File 'Library/Homebrew/linkage_cache_store.rb', line 15

def initialize(keg_path, database)
  @keg_path = keg_path
  super(database)
end

Instance Method Details

#delete!nil

Delete the keg from the LinkageCacheStore

Returns:

  • (nil)

62
63
64
# File 'Library/Homebrew/linkage_cache_store.rb', line 62

def delete!
  database.delete(@keg_path)
end

#fetch(type) ⇒ Hash

Parameters:

Returns:

  • (Hash)

Raises:

  • (TypeError)

    error if the type is not in HASH_LINKAGE_TYPES


47
48
49
50
51
52
53
54
55
56
57
# File 'Library/Homebrew/linkage_cache_store.rb', line 47

def fetch(type)
  unless HASH_LINKAGE_TYPES.include?(type)
    raise TypeError, <<~EOS
      Can't fetch types that are not defined for the linkage store
    EOS
  end

  return {} unless keg_exists?

  fetch_hash_values(type)
end

#keg_exists?Boolean

Returns true if the database has any value for the current keg_path.

Returns:

  • (Boolean)

23
24
25
# File 'Library/Homebrew/linkage_cache_store.rb', line 23

def keg_exists?
  !database.get(@keg_path).nil?
end

#update!(hash_values) ⇒ nil

Inserts dylib-related information into the cache if it does not exist or updates data into the linkage cache if it does exist.

Parameters:

  • hash_values (Hash)

    hash containing KVPs of { :type => Hash }

Returns:

  • (nil)

32
33
34
35
36
37
38
39
40
41
42
# File 'Library/Homebrew/linkage_cache_store.rb', line 32

def update!(hash_values)
  hash_values.each_key do |type|
    next if HASH_LINKAGE_TYPES.include?(type)

    raise TypeError, <<~EOS
      Can't update types that are not defined for the linkage store
    EOS
  end

  database.set @keg_path, hash_values
end