class Suppository::Release

Public Class Methods

new(repo_path, dist, unsigned = false) click to toggle source
# File lib/suppository/release.rb, line 9
def initialize(repo_path, dist, unsigned = false)
  @dist = dist
  @unsigned = unsigned
  @dist_path = "#{repo_path}/dists/#{dist}"
  @release_file = "#{@dist_path}/Release"
end

Public Instance Methods

create() click to toggle source
# File lib/suppository/release.rb, line 16
def create
  write_file
  sign unless @unsigned
end

Private Instance Methods

architectures() click to toggle source
# File lib/suppository/release.rb, line 95
def architectures
  directories("#{@dist_path}/*/*").collect { |d| d.split('-')[1] }.uniq.sort.join(' ')
end
components() click to toggle source
# File lib/suppository/release.rb, line 91
def components
  directories("#{@dist_path}/*").join(' ')
end
content() click to toggle source
# File lib/suppository/release.rb, line 27
def content
  result = []
  result << "Codename: #{@dist}\n"
  result << "Architectures: #{architectures}\n"
  result << "Components: #{components}\n"
  result << "Date: #{date}\n"
  result << package_hashes
end
date() click to toggle source
# File lib/suppository/release.rb, line 87
def date
  Time.now.getutc.strftime('%a, %d %b %Y %H:%M:%S %Z')
end
directories(path_pattern) click to toggle source
# File lib/suppository/release.rb, line 99
def directories(path_pattern)
  directories = Dir.glob(path_pattern).select { |f| File.directory? f }
  directories.collect { |d| File.basename(d) }
end
md5_hashes() click to toggle source
# File lib/suppository/release.rb, line 44
def md5_hashes
  result = []
  result << "MD5Sum:\n"
  packages.each { |f| result << puts_hash(f, Digest::MD5.file(f)) }
  result
end
package_hashes() click to toggle source
# File lib/suppository/release.rb, line 36
def package_hashes
  result = []
  result << md5_hashes
  result << sha1_hashes
  result << sha2_hashes
  result << sha5_hashes
end
packages() click to toggle source
# File lib/suppository/release.rb, line 78
def packages
  @packages ||= Dir.glob("#{@dist_path}/*/*/Packages*").sort
end
puts_hash(f, hash) click to toggle source
# File lib/suppository/release.rb, line 82
def puts_hash(f, hash)
  relative = f.split(@dist_path).pop[1..-1]
  format(" %s %17d %s\n", hash, File.size(f), relative)
end
sha1_hashes() click to toggle source
# File lib/suppository/release.rb, line 51
def sha1_hashes
  result = []
  result << "SHA1:\n"
  packages.each { |f| result << puts_hash(f, Digest::SHA1.file(f)) }
  result
end
sha2_hashes() click to toggle source
# File lib/suppository/release.rb, line 58
def sha2_hashes
  result = []
  result << "SHA256:\n"
  packages.each { |f| result << puts_hash(f, Digest::SHA256.file(f)) }
  result
end
sha5_hashes() click to toggle source
# File lib/suppository/release.rb, line 65
def sha5_hashes
  result = []
  result << "SHA512:\n"
  packages.each { |f| result << puts_hash(f, Digest::SHA512.file(f)) }
  result
end
sign() click to toggle source
# File lib/suppository/release.rb, line 72
def sign
  gpg_file = "#{@release_file}.gpg"
  FileUtils.rm_rf(gpg_file)
  CommandRunner.new('gpg', "-abs -o #{gpg_file} #{@release_file}").run
end
write_file() click to toggle source
# File lib/suppository/release.rb, line 23
def write_file
  open(@release_file, 'w') { |f| f.puts content.join('') }
end