prm 0.2.14 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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