class RBS::Collection::Cleaner

Attributes

lock[R]

Public Class Methods

new(lockfile_path:) click to toggle source
# File rbs-3.2.1/lib/rbs/collection/cleaner.rb, line 8
def initialize(lockfile_path:)
  @lock = Config.from_path(lockfile_path)
end

Public Instance Methods

clean() click to toggle source
# File rbs-3.2.1/lib/rbs/collection/cleaner.rb, line 12
def clean
  lock.repo_path.glob('*/*') do |dir|
    *_, gem_name, version = dir.to_s.split('/')
    gem_name or raise
    version or raise
    next if needed? gem_name, version

    case
    when dir.symlink?
      dir.unlink
    when dir.directory?
      FileUtils.remove_entry_secure(dir.to_s)
    else
      raise
    end
  end
end
needed?(gem_name, version) click to toggle source
# File rbs-3.2.1/lib/rbs/collection/cleaner.rb, line 30
def needed?(gem_name, version)
  gem = lock.gem(gem_name)
  return false unless gem

  gem['version'] == version
end