class RBS::Collection::Cleaner

def clean

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

def initialize(lockfile_path:)

def initialize(lockfile_path:)
  @lock = Config.from_path(lockfile_path)
end

def needed?(gem_name, version)

def needed?(gem_name, version)
  gem = lock.gem(gem_name)
  return false unless gem
  gem['version'] == version
end