prm 0.2.14 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c59c77246e92858fa026b811a193724c105bcdb
4
- data.tar.gz: e7c006d04276746730d96438d58f5970c209f392
3
+ metadata.gz: a78bc2ba1b8f251c719f5d318745a40db260dd75
4
+ data.tar.gz: 579a58d6ddb8158d55b0a14c5e86a617d02711c2
5
5
  SHA512:
6
- metadata.gz: b164948c21d5d6510a10839f2035cf6c3b3fc4d2fb2e2459cdd07ce4eec7ed46c064e657c0bcf29d6f520407a1d311b4c9b97679906f7805575d6e3bd2227a95
7
- data.tar.gz: 7ac1d09b3b204e4d2e368a07db8a6ac4f6f9e2194d3e32a06880b35797e7523309abf0d305fae4273bd314b1df3c61879a8911c3df85e3c4072fce52af3c37c0
6
+ metadata.gz: 67862c147b674c244f4535f20e45b21bea801c2d314e3803b4621cf96c874df399f91c5172e34a93056232e5675604c077faaec1ea4ba077fc7615f24a8b2ef8
7
+ data.tar.gz: b5114cf8c52d7e528283036216ce7d25278006e7d8f3980d32bdabdc8712b428ba1f4be5d788ff3a39850e470d1145453a0f7144b120cbea11069b92e60b0124
data/bin/prm CHANGED
@@ -31,10 +31,13 @@ class Main < Clamp::Command
31
31
  "This option will be removed in next stable release (0.3.0)\n"
32
32
  end
33
33
  option ["-k", "--gpg"], "GPG KEY", "Sign release files with this GPG key", :default => false
34
+ option ["-x", "--gpg_passphrase"], "GPG PASSPHRASE", "Passphrase for GPG key [DEB ONLY]", :default => false
35
+ option ["-x", "--gpg_passphrase"], "GPG PASSPHRASE", "Passphrase for GPG key", :default => false
36
+ option ["-n", "--gpg_sign_algorithm"], "GPG SIGN ALGORITHM", "Digest algorithm to use for signing (e.g SHA1, SHA512, etc)", :default => false
34
37
 
35
38
  def execute
36
39
  if version?
37
- puts "PRM version: 0.2.14\n"
40
+ puts "PRM version: 0.2.15\n"
38
41
  exit
39
42
  end
40
43
 
@@ -63,6 +66,8 @@ class Main < Clamp::Command
63
66
  end
64
67
  unless gpg.nil?
65
68
  r.gpg = gpg
69
+ r.gpg_passphrase = gpg_passphrase
70
+ r.gpg_sign_algorithm = gpg_sign_algorithm
66
71
  end
67
72
  unless accesskey.nil?
68
73
  r.accesskey = accesskey
@@ -2,11 +2,12 @@ require 'rubygems'
2
2
  require 'fileutils'
3
3
  require 'zlib'
4
4
  require 'digest/md5'
5
+ require 'digest/sha1'
5
6
  require 'digest/sha2'
6
7
  require 'erb'
7
8
  require 'find'
8
9
  require 'thread'
9
- require 'peach'
10
+ require 'peach'
10
11
  require 'aws/s3'
11
12
  require 'arr-pm'
12
13
  require File.join(File.dirname(__FILE__), 'rpm.rb')
@@ -81,50 +82,55 @@ module Debian
81
82
 
82
83
  npath = "dists/" + r + "/" + c + "/" + "binary-" + a + "/"
83
84
 
84
- d = File.open(pfpath, "w+")
85
+ d = File.open(pfpath, "w+")
85
86
  write_mutex = Mutex.new
86
87
 
87
88
  Dir.glob("#{fpath}*.deb").peach do |deb|
88
- md5sum = ''
89
- tdeb = deb.split('/').last
90
- md5sum_path = path + "/dists/" + r + "/" + c + "/" + "binary-" + a + "/md5-results/" + tdeb
89
+ algs = {
90
+ 'md5' => Digest::MD5.new,
91
+ 'sha1' => Digest::SHA1.new,
92
+ 'sha256' => Digest::SHA256.new
93
+ }
94
+ sums = {
95
+ 'md5' => '',
96
+ 'sha1' => '',
97
+ 'sha256' => ''
98
+ }
99
+ tdeb = File.basename(deb)
100
+ init_size = File.size(deb)
101
+ deb_contents = nil
91
102
 
92
103
  FileUtils.mkdir_p "tmp/#{tdeb}/"
93
104
  if not nocache
94
- FileUtils.mkdir_p path + "/dists/" + r + "/" + c + "/" + "binary-" + a + "/md5-results/"
95
- end
96
- `ar p #{deb} control.tar.gz | tar zx -C tmp/#{tdeb}/`
97
-
98
- init_size = `wc -c < #{deb}`
105
+ sums.keys.each do |s|
106
+ sum_path = "#{path}/dists/#{r}/#{c}/binary-#{a}/#{s}-results/#{tdeb}"
107
+ FileUtils.mkdir_p File.dirname(sum_path)
99
108
 
100
- if deb.split("/").last.to_s == md5sum_path.split("/").last.to_s
101
-
102
- end
103
-
104
- if File.exists?("#{md5sum_path}") && nocache.nil?
105
- file = File.open(md5sum_path, 'r')
106
- md5sum = file.read
107
- file.close
108
- else
109
- md5sum = Digest::MD5.file(deb)
110
- if nocache.nil?
111
- File.open(md5sum_path, 'w') { |file| file.write(md5sum) }
112
- end
113
- end
109
+ if File.exist?(sum_path)
110
+ stored_sum = File.read(sum_path)
111
+ sum = stored_sum unless nocache.nil?
112
+ end
114
113
 
115
- if File.exists?("#{md5sum_path}") && nocache
116
- file = File.open(md5sum_path, 'r')
117
- temp_md5sum = file.read
118
- file.close
114
+ unless sum
115
+ deb_contents ||= File.read(deb)
116
+ sum = algs[s].hexdigest(deb_contents)
117
+ end
119
118
 
120
- if md5sum != temp_md5sum
121
- puts "WARN: md5sum mismatch on #{deb}\n"
119
+ sums[s] = sum
120
+ if nocache.nil?
121
+ File.open(sum_path, 'w') { |f| f.write(sum) }
122
+ elsif sum != stored_sum
123
+ puts "WARN: #{s}sum mismatch on #{deb}\n"
124
+ end
122
125
  end
123
126
  end
127
+ `ar p #{deb} control.tar.gz | tar zx -C tmp/#{tdeb}/`
124
128
 
125
129
  package_info = [
126
130
  "Filename: #{npath}#{s3_compatible_encode(tdeb)}",
127
- "MD5sum: #{md5sum}",
131
+ "MD5sum: #{sums['md5']}",
132
+ "SHA1: #{sums['sha1']}",
133
+ "SHA256: #{sums['sha256']}",
128
134
  "Size: #{init_size}"
129
135
  ]
130
136
 
@@ -132,7 +138,7 @@ module Debian
132
138
  # Copy the control file data into the Packages list
133
139
  d.write(File.read("tmp/#{tdeb}/control").gsub!(/\n+/, "\n"))
134
140
  d.write(package_info.join("\n"))
135
- d.write("\n") # blank line between package info in the Packages file
141
+ d.write("\n\n") # blank line between package info in the Packages file
136
142
  end
137
143
  end
138
144
 
@@ -161,7 +167,7 @@ module Debian
161
167
  end
162
168
  }
163
169
 
164
- component_ar.each do |c|
170
+ component_ar.each do |c|
165
171
  arch.each do |ar|
166
172
  unreasonable_array.each do |unr|
167
173
  tmp_path = "#{path}/dists/#{release}/#{c}/binary-#{ar}"
@@ -169,10 +175,12 @@ module Debian
169
175
  filename = "#{c}/binary-#{ar}/#{unr}".chomp
170
176
 
171
177
  byte_size = File.size("#{tmp_path}/#{unr}").to_s
172
- md5sum = Digest::MD5.file("#{tmp_path}/#{unr}").to_s
178
+ file_contents = File.read("#{tmp_path}/#{unr}")
173
179
 
174
180
  tmp_hash['size'] = byte_size
175
- tmp_hash['md5sum'] = md5sum
181
+ tmp_hash['md5'] = Digest::MD5.hexdigest(file_contents)
182
+ tmp_hash['sha1'] = Digest::SHA1.hexdigest(file_contents)
183
+ tmp_hash['sha256'] = Digest::SHA256.hexdigest(file_contents)
176
184
  release_info[filename] = tmp_hash
177
185
  end
178
186
  end
@@ -192,10 +200,18 @@ module Debian
192
200
  # We expect that GPG is installed and a key has already been made
193
201
  def generate_release_gpg(path,release,gpg)
194
202
  Dir.chdir("#{path}/dists/#{release}") do
203
+ if gpg_sign_algorithm.nil?
204
+ sign_algorithm = "none"
205
+ else
206
+ sign_algorithm = gpg_sign_algorithm
207
+ end
208
+
195
209
  if gpg.nil?
196
- sign_cmd = "gpg --yes --output Release.gpg -b Release"
210
+ sign_cmd = "gpg --digest-algo \"#{sign_algorithm}\" --yes --output Release.gpg -b Release"
211
+ elsif !gpg_passphrase.nil?
212
+ sign_cmd = "echo \'#{gpg_passphrase}\' | gpg --digest-algo \"#{sign_algorithm}\" -u #{gpg} --passphrase-fd 0 --yes --output Release.gpg -b Release"
197
213
  else
198
- sign_cmd = "gpg -u #{gpg} --yes --output Release.gpg -b Release"
214
+ sign_cmd = "gpg --digest-algo \"#{sign_algorithm}\" -u #{gpg} --yes --output Release.gpg -b Release"
199
215
  end
200
216
  system sign_cmd
201
217
  end
@@ -213,7 +229,7 @@ module SNAP
213
229
  return
214
230
  end
215
231
 
216
- release.each do |r|
232
+ release.each do |r|
217
233
  time = Time.new
218
234
  now = time.strftime("%Y-%m-%d-%H-%M")
219
235
  new_snap = "#{snapname}-#{now}"
@@ -226,7 +242,7 @@ module SNAP
226
242
  end
227
243
  end
228
244
 
229
- if File.exists?("#{path}/dists/#{r}/#{snapname}") && !File.symlink?("#{path}/dists/#{r}/#{snapname}")
245
+ if File.exists?("#{path}/dists/#{r}/#{snapname}") && !File.symlink?("#{path}/dists/#{r}/#{snapname}")
230
246
  puts "Snapshot target is a filesystem, remove it or rename your snap target"
231
247
  return
232
248
  end
@@ -352,6 +368,8 @@ module PRM
352
368
  attr_accessor :label
353
369
  attr_accessor :origin
354
370
  attr_accessor :gpg
371
+ attr_accessor :gpg_passphrase
372
+ attr_accessor :gpg_sign_algorithm
355
373
  attr_accessor :secretkey
356
374
  attr_accessor :accesskey
357
375
  attr_accessor :snapshot
@@ -122,6 +122,13 @@ module Redhat
122
122
  r_file.close
123
123
 
124
124
  FileUtils.mv("#{repo_path}/repomd.xml.tmp", "#{repo_path}/repomd.xml")
125
+
126
+ unless gpg == false
127
+ # We expect that GPG is installed and a key has already been made
128
+ sign_cmd = "gpg -u #{gpg} --yes --detach-sign --armor #{repo_path}/repomd.xml"
129
+ system sign_cmd
130
+ end
131
+
125
132
  puts "Built Yum repository for #{r}\n"
126
133
  end
127
134
  end
@@ -7,7 +7,17 @@ Origin: <%= origin %>
7
7
  Label: <%= label %>
8
8
  <% end -%>
9
9
  MD5Sum:
10
- d41d8cd98f00b204e9800998ecf8427e 0 Release
10
+ d41d8cd98f00b204e9800998ecf8427e 0 Release
11
11
  <% release_info.each_pair do |k,v| -%>
12
- <%= "#{release_info[k]['md5sum']} #{release_info[k]['size']} #{k}" %>
12
+ <%= "#{release_info[k]['md5']} #{release_info[k]['size']} #{k}" %>
13
+ <% end -%>
14
+ SHA1:
15
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
16
+ <% release_info.each_pair do |k,v| -%>
17
+ <%= "#{release_info[k]['sha1']} #{release_info[k]['size']} #{k}" %>
18
+ <% end -%>
19
+ SHA256:
20
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 Release
21
+ <% release_info.each_pair do |k,v| -%>
22
+ <%= "#{release_info[k]['sha256']} #{release_info[k]['size']} #{k}" %>
13
23
  <% end -%>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Gailey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-29 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: peach