Class: Akabei::PackageInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/akabei/package_info.rb

Constant Summary collapse

ARRAY_ATTRIBUTES =

See write_pkginfo() in /usr/bin/makepkg

%w[
  license
  replaces
  group
  conflict
  provides
  backup
  depend
  optdepend
  makedepend
  checkdepend

  makepkgopt
].freeze
ATTRIBUTES =
%w[
  pkgname
  pkgbase
  pkgver
  pkgdesc
  url
  builddate
  packager
  size
  arch
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePackageInfo

Returns a new instance of PackageInfo.



36
37
38
39
40
# File 'lib/akabei/package_info.rb', line 36

def initialize
  ARRAY_ATTRIBUTES.each do |attr|
    send("#{attr}=", [])
  end
end

Class Method Details

.parse(data) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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