Class: BundleSafeUpdate::RiskCache

Inherits:
Object
  • Object
show all
Defined in:
lib/bundle_safe_update/risk_cache.rb

Defined Under Namespace

Classes: OwnerChange

Constant Summary collapse

CACHE_FILENAME =
'bundle-safe-update-cache.yml'
CACHE_VERSION =
1

Instance Method Summary collapse

Constructor Details

#initialize(cache_path: nil) ⇒ RiskCache

Returns a new instance of RiskCache.



14
15
16
17
# File 'lib/bundle_safe_update/risk_cache.rb', line 14

def initialize(cache_path: nil)
  @cache_path = cache_path || default_cache_path
  @data = load_cache
end

Instance Method Details

#detect_owner_change(gem_name, current_owners) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/bundle_safe_update/risk_cache.rb', line 30

def detect_owner_change(gem_name, current_owners)
  cached = owners_for(gem_name)
  sanitized = current_owners.compact
  return nil if cached.empty? || cached.sort == sanitized.sort

  OwnerChange.new(
    gem_name: gem_name,
    previous_owners: cached,
    current_owners: sanitized
  )
end

#exists?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/bundle_safe_update/risk_cache.rb', line 51

def exists?
  File.exist?(@cache_path)
end

#owner_changed?(gem_name, current_owners) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
# File 'lib/bundle_safe_update/risk_cache.rb', line 23

def owner_changed?(gem_name, current_owners)
  cached = owners_for(gem_name)
  return false if cached.empty?

  cached.sort != current_owners.compact.sort
end

#owners_for(gem_name) ⇒ Object



19
20
21
# File 'lib/bundle_safe_update/risk_cache.rb', line 19

def owners_for(gem_name)
  @data['owners'][gem_name] || []
end

#saveObject



46
47
48
49
# File 'lib/bundle_safe_update/risk_cache.rb', line 46

def save
  @data['updated_at'] = Time.now.iso8601
  File.write(@cache_path, YAML.dump(@data))
end

#update_owners(gem_name, owners) ⇒ Object



42
43
44
# File 'lib/bundle_safe_update/risk_cache.rb', line 42

def update_owners(gem_name, owners)
  @data['owners'][gem_name] = owners.compact.sort
end