Class: FRM::Base

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

Direct Known Subclasses

Deb, Package, PackageRelease, ReleasePusher, S3

Instance Method Summary collapse

Instance Method Details

#compute_md5(string) ⇒ Object



11
12
13
# File 'lib/frm/base.rb', line 11

def compute_md5(string)
  Digest::MD5.hexdigest(string)
end

#compute_sha1(string) ⇒ Object



15
16
17
# File 'lib/frm/base.rb', line 15

def compute_sha1(string)
  Digest::SHA1.hexdigest(string)
end

#compute_sha2(string) ⇒ Object



19
20
21
# File 'lib/frm/base.rb', line 19

def compute_sha2(string)
  Digest::SHA2.hexdigest(string)
end

#generate_gzip_pipe(contents) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/frm/base.rb', line 36

def generate_gzip_pipe(contents)
  read_buffer, write_buffer = IO.pipe
  gzip_writer = Zlib::GzipWriter.new write_buffer
  gzip_writer.mtime = 1 # ensure that the header is determinstic
  gzip_writer.write contents
  gzip_writer.close
  read_buffer
end

#gpg_clearsign(message) ⇒ Object

TODO: there has to be a better way to use gpg withen ruby. found many broken solutions :\



26
27
28
# File 'lib/frm/base.rb', line 26

def gpg_clearsign(message)
  `echo "#{message}" | gpg --clearsign`
end

#gpg_detached(message) ⇒ Object

TODO: same as above



31
32
33
# File 'lib/frm/base.rb', line 31

def gpg_detached(message)
  `echo "#{message}" | gpg -abs`
end

#gunzip_pipe(gziped_pipe) ⇒ Object



45
46
47
48
49
50
# File 'lib/frm/base.rb', line 45

def gunzip_pipe(gziped_pipe)
  gzip_reader = Zlib::GzipReader.new gziped_pipe
  unzipped_string = gzip_reader.read
  gzip_reader.close
  return unzipped_string
end

#merge_package_file(in_pipe, out_pipe, package_list) ⇒ Object



74
75
76
77
78
79
# File 'lib/frm/base.rb', line 74

def merge_package_file(in_pipe,out_pipe,package_list)
  sorted_list = package_list.sort { |a,b| a['Package'] <=> b['Package'] }
  # while (next_stub = parse_package_stub in_pipe)
  #   STDERR.puts "next_stub[0] = #{next_stub[0]}"
  # end
end

#parse_package_stub(read_buffer) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/frm/base.rb', line 52

def parse_package_stub(read_buffer)
  package = {}
  stub = ""
  while line = read_buffer.gets
    return nil if line.strip.empty? 
    raise "bad input" unless (match = line.match /^\w+\-?\w+?: /)
    stub << line
    key = match[0].delete ': ' # if match
    value = match.post_match.strip
    package[key] = value
    if key == 'Description'
      while (line = read_buffer.gets).strip != ""
        package['Description'] << line
        stub << line
      end
      package['Description'].rstrip!
      return package, stub
    end
  end
  nil
end