class Akabei::PackageInfo

Constants

ARRAY_ATTRIBUTES

See write_pkginfo() in /usr/bin/makepkg

ATTRIBUTES

Public Class Methods

new() click to toggle source
# File lib/akabei/package_info.rb, line 36
def initialize
  ARRAY_ATTRIBUTES.each do |attr|
    send("#{attr}=", [])
  end
end
parse(data) click to toggle source
# File lib/akabei/package_info.rb, line 42
def self.parse(data)
  info = new
  data.each_line do |line|
    line.strip!
    next if line.start_with?('#')
    if m = line.match(/\A(\w+)\s*=\s*(.+)\z/)
      key = m[1]
      val = m[2]
      if ARRAY_ATTRIBUTES.include?(key)
        info.send(key) << val
      elsif ATTRIBUTES.include?(key)
        if v = info.send(key)
          raise Error.new("Duplicated entry #{key}: #{v} and #{val}")
        else
          info.send("#{key}=", val)
        end
      else
        raise Error.new("Unknown attribute: #{key}: #{val}")
      end
    else
      raise Error.new("Malformed line: #{line}")
    end
  end
  info
end