Class: FRM::Deb

Inherits:
Base
  • Object
show all
Defined in:
lib/frm/deb.rb

Instance Method Summary collapse

Methods inherited from Base

#compute_md5, #compute_sha1, #compute_sha2, #generate_gzip_pipe, #gpg_clearsign, #gpg_detached, #gunzip_pipe, #merge_package_file, #parse_package_stub

Constructor Details

#initializeDeb

Returns a new instance of Deb.



153
154
# File 'lib/frm/deb.rb', line 153

def initialize()
end

Instance Method Details

#generate_package_file(in_packages = []) ⇒ Object



156
157
158
159
160
161
# File 'lib/frm/deb.rb', line 156

def generate_package_file(in_packages=[])
  packages = in_packages.dup
  package_file = ''
  packages.each { |package| package_file << generate_package_stub(package) }
  return package_file
end

#generate_package_line(key = '', value = '') ⇒ Object



192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/frm/deb.rb', line 192

def generate_package_line(key='',value='')
  valid_options = %w{Package Version Architecture Maintainer Standards-Version Homepage Priority Depends Filename Size SHA256 SHA1 MD5sum Description}
  raise "Bogus option passed: #{key}" unless valid_options.include?(key)                
  
  case key
  when 'Depends'
    return "Depends: #{value.join(', ')}\n"
  when 'Maintainer'
    return "Maintainer: <#{value}>\n"
  else
    return "#{key}: #{value}\n"
  end
end

#generate_package_releaseObject



182
183
184
185
186
187
188
189
# File 'lib/frm/deb.rb', line 182

def generate_package_release
  return "Component: main
Origin: apt.cloudscaling.com
Label: apt repository natty
Architecture: amd64
Description: Cloudscaling APT repository
"
end

#generate_package_stub(in_package = {}) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/frm/deb.rb', line 164

def generate_package_stub(in_package={})
  package = in_package.dup
  package_stub = ''
  description = package.delete('Description') || "no description given"
  path_to_deb = package.delete 'path_to_deb'
  section = package.delete 'section'
  package["Filename"] = "pool/#{section}/#{package['Package'][0]}/#{package['Package']}/#{package['Package']}_#{package['Version']}_#{package['Architecture']}.deb"
  package["Size"] = File.new(path_to_deb).size
  package["MD5sum"] = self.compute_md5 File.read path_to_deb
  package["SHA1"] = compute_sha1 File.read path_to_deb
  package["SHA256"] = compute_sha2 File.read path_to_deb
  package["Description"] = description
  package.each { |key,value| package_stub << generate_package_line(key,value) }
  package_stub << "\n"
  return package_stub
end