Class: Akabei::PackageInfo
- Inherits:
-
Object
- Object
- Akabei::PackageInfo
- 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
-
#initialize ⇒ PackageInfo
constructor
A new instance of PackageInfo.
Constructor Details
#initialize ⇒ PackageInfo
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 |