Class: Akabei::PackageEntry

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

Constant Summary collapse

ARRAY_DESC_ATTRIBUTES =
%w[
  groups
  license
  replaces
].freeze
DESC_ATTRIBUTES =
%w[
  filename
  name
  base
  version
  desc
  csize
  isize
  md5sum
  sha256sum
  pgpsig
  url
  arch
  builddate
  packager
].freeze
ARRAY_DEPENDS_ATTRIBUTES =
%w[
  depends
  conflicts
  provides
  optdepends
  makedepends
  checkdepends
].freeze
ARRAY_FILES_ATTRIBUTES =
%w[files].freeze
ARRAY_ATTRIBUTES =
(ARRAY_DESC_ATTRIBUTES + ARRAY_DEPENDS_ATTRIBUTES + ARRAY_FILES_ATTRIBUTES).freeze

Instance Method Summary collapse

Constructor Details

#initializePackageEntry

Returns a new instance of PackageEntry.



41
42
43
44
45
# File 'lib/akabei/package_entry.rb', line 41

def initialize
  ARRAY_ATTRIBUTES.each do |key|
    instance_variable_set("@#{key}", [])
  end
end

Instance Method Details

#==(other) ⇒ Object



62
63
64
65
66
# File 'lib/akabei/package_entry.rb', line 62

def ==(other)
  (ARRAY_ATTRIBUTES + DESC_ATTRIBUTES).all? do |attr|
    public_send(attr) == other.public_send(attr)
  end
end

#add(key, val) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/akabei/package_entry.rb', line 47

def add(key, val)
  ivar = "@#{key}".intern
  if ARRAY_ATTRIBUTES.include?(key)
    instance_variable_get(ivar) << val
  elsif DESC_ATTRIBUTES.include?(key)
    if v = instance_variable_get(ivar)
      raise Error.new("Multiple entry found: #{v} and #{val}")
    else
      instance_variable_set(ivar, val)
    end
  else
    raise Error.new("Unknown entry key: #{key}")
  end
end

#db_nameObject



68
69
70
# File 'lib/akabei/package_entry.rb', line 68

def db_name
  "#{name}-#{version}"
end

#write_array(io, attr) ⇒ Object



94
95
96
97
98
99
# File 'lib/akabei/package_entry.rb', line 94

def write_array(io, attr)
  arr = instance_variable_get("@#{attr}")
  unless arr.empty?
    write_entry(io, attr, arr)
  end
end

#write_depends(io) ⇒ Object



82
83
84
85
86
# File 'lib/akabei/package_entry.rb', line 82

def write_depends(io)
  ARRAY_DEPENDS_ATTRIBUTES.each do |attr|
    write_array(io, attr)
  end
end

#write_desc(io) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/akabei/package_entry.rb', line 72

def write_desc(io)
  ARRAY_DESC_ATTRIBUTES.each do |attr|
    write_array(io, attr)
  end

  DESC_ATTRIBUTES.each do |attr|
    write_string(io, attr)
  end
end

#write_entry(io, attr, val) ⇒ Object



107
108
109
110
111
112
# File 'lib/akabei/package_entry.rb', line 107

def write_entry(io, attr, val)
  io.puts "%#{attr.upcase}%"
  io.puts val
  io.puts
  true
end

#write_files(io) ⇒ Object



88
89
90
91
92
# File 'lib/akabei/package_entry.rb', line 88

def write_files(io)
  unless write_array(io, 'files')
    warn 'WARNING: files attribute is empty.'
  end
end

#write_string(io, attr) ⇒ Object



101
102
103
104
105
# File 'lib/akabei/package_entry.rb', line 101

def write_string(io, attr)
  if v = instance_variable_get("@#{attr}")
    write_entry(io, attr, v)
  end
end