Method: Akabei::Repository#load

Defined in:
lib/akabei/repository.rb

#load(path) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/akabei/repository.rb', line 29

def load(path)
  path = Pathname.new(path)
  return unless path.readable?
  verify!(path)
  db = {}
  ArchiveUtils.each_entry(path) do |entry, archive|
    db_name, key = *entry.pathname.split('/', 2)
    if key.include?('/')
      raise Error.new("Malformed repository database: #{path}: #{entry.pathname}")
    end
    db[db_name] ||= PackageEntry.new
    case key
    when ''
      # Ignore
    when 'desc', 'depends', 'files'
      load_entries(db[db_name], archive.read_data)
    else
      raise Error.new("Unknown repository database key: #{key}")
    end
  end
  db.each_value do |entry|
    @db[entry.name] = entry
  end
  nil
end