frm 0.0.8 → 0.0.9
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.
- data/.gitignore +2 -0
- data/bin/frm +12 -1
- data/lib/frm/base.rb +18 -2
- data/lib/frm/release.rb +2 -2
- data/lib/frm/release_pusher.rb +4 -2
- data/lib/frm/s3.rb +4 -3
- data/lib/frm/version.rb +1 -1
- metadata +1 -1
data/bin/frm
CHANGED
@@ -50,6 +50,17 @@ Usage: frm [options] package1 [package2] ..."
|
|
50
50
|
options[:release] = release
|
51
51
|
end
|
52
52
|
|
53
|
+
options[:public_repo] = false
|
54
|
+
opts.on('-P','--public-repo true|false','public repo or not') do |public_repo|
|
55
|
+
raise "public_repo option can only be 'true' or 'false'" \
|
56
|
+
unless public_repo == 'true' || public_repo == 'false'
|
57
|
+
if public_repo == 'true'
|
58
|
+
options[:public_repo] = true
|
59
|
+
else
|
60
|
+
options[:public_repo] = false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
53
64
|
|
54
65
|
# This displays the help screen, all programs are
|
55
66
|
# assumed to have this option.
|
@@ -94,6 +105,6 @@ puts "creating release..."
|
|
94
105
|
package_release = FRM::PackageRelease.new(packages,options[:release])
|
95
106
|
|
96
107
|
puts "pushing release..."
|
97
|
-
release_pusher = FRM::ReleasePusher.new(package_release,options[:access_key],options[:secret_key],options[:bucket],options[:prefix])
|
108
|
+
release_pusher = FRM::ReleasePusher.new(package_release,options[:access_key],options[:secret_key],options[:bucket],options[:prefix],options[:public_repo])
|
98
109
|
|
99
110
|
puts "looks like everything ran ok!"
|
data/lib/frm/base.rb
CHANGED
@@ -13,16 +13,32 @@ module FRM
|
|
13
13
|
Digest::SHA2.hexdigest(string)
|
14
14
|
end
|
15
15
|
|
16
|
+
def run(command)
|
17
|
+
output = `#{command} 2>&1`.chomp
|
18
|
+
unless $?.success?
|
19
|
+
STDERR.puts "failed to run command: #{command}"
|
20
|
+
STDERR.puts "output was: "
|
21
|
+
STDERR.puts output
|
22
|
+
raise "failed to run command: #{command}"
|
23
|
+
end
|
24
|
+
return output
|
25
|
+
end
|
26
|
+
|
16
27
|
# TODO:
|
17
28
|
# there has to be a better way to use gpg withen ruby. found many
|
18
29
|
# broken solutions :\
|
19
30
|
def gpg_clearsign(message)
|
20
|
-
|
31
|
+
run "echo '#{message}' | gpg --clearsign"
|
21
32
|
end
|
22
33
|
|
23
34
|
# TODO: same as above
|
24
35
|
def gpg_detached(message)
|
25
|
-
|
36
|
+
run "echo '#{message}' | gpg -abs"
|
37
|
+
end
|
38
|
+
|
39
|
+
# TODO: same as above
|
40
|
+
def gpg_export_pubkey
|
41
|
+
run "gpg --armor --export"
|
26
42
|
end
|
27
43
|
|
28
44
|
|
data/lib/frm/release.rb
CHANGED
@@ -81,7 +81,7 @@ Description: Cloudscaling APT repository
|
|
81
81
|
|
82
82
|
def filename(package)
|
83
83
|
filename = File.basename package.path
|
84
|
-
shortname =
|
84
|
+
shortname = run("dpkg --field #{package.path} Package")
|
85
85
|
first_letter = shortname[0]
|
86
86
|
package.repo_filename = "pool/main/#{first_letter}/#{shortname}/#{filename}"
|
87
87
|
end
|
@@ -94,7 +94,7 @@ Description: Cloudscaling APT repository
|
|
94
94
|
|
95
95
|
def generate_package_stub(package)
|
96
96
|
package_stub = ''
|
97
|
-
package_stub <<
|
97
|
+
package_stub << run("dpkg --field #{package.path}") + "\n"
|
98
98
|
package_stub << "Filename: #{filename(package)}\n"
|
99
99
|
package_stub << "Size: #{package.size}\n"
|
100
100
|
package_stub << "MD5sum: #{package.md5}\n"
|
data/lib/frm/release_pusher.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module FRM
|
2
2
|
|
3
3
|
class ReleasePusher < Base
|
4
|
-
def initialize(package_release,access_key,secret_key,bucket,prefix)
|
4
|
+
def initialize(package_release,access_key,secret_key,bucket,prefix,public_repo=false)
|
5
5
|
@release = package_release.release
|
6
6
|
@bucket = bucket
|
7
7
|
@prefix = prefix
|
8
|
-
@s3 = FRM::S3.new(access_key,secret_key)
|
8
|
+
@s3 = FRM::S3.new(access_key,secret_key,public_repo)
|
9
9
|
push_packages(package_release.packages)
|
10
10
|
push_release_files(package_release)
|
11
11
|
end
|
@@ -34,6 +34,8 @@ module FRM
|
|
34
34
|
@s3.put(i386_release_file_path + '/Release',package_release.i386_release_file,@bucket)
|
35
35
|
@s3.put(i386_release_file_path + '/Packages',package_release.i386_packages_file,@bucket)
|
36
36
|
@s3.put(i386_release_file_path + '/Packages.gz',package_release.gzipped_i386_packages_file,@bucket)
|
37
|
+
# push public key
|
38
|
+
@s3.put(@prefix + '/public.key',gpg_export_pubkey,@bucket)
|
37
39
|
end
|
38
40
|
|
39
41
|
|
data/lib/frm/s3.rb
CHANGED
@@ -3,13 +3,14 @@ require 'aws-sdk'
|
|
3
3
|
module FRM
|
4
4
|
class S3 < Base
|
5
5
|
|
6
|
-
attr_reader :max_retries, :s3
|
6
|
+
attr_reader :max_retries, :s3, :acl
|
7
7
|
|
8
|
-
def initialize(access_key_id,secret_access_key)
|
8
|
+
def initialize(access_key_id,secret_access_key,public_repo=false)
|
9
9
|
@max_retries = 10
|
10
10
|
AWS.config(:access_key_id => access_key_id,
|
11
11
|
:secret_access_key => secret_access_key)
|
12
12
|
@s3 = AWS::S3.new
|
13
|
+
@acl = public_repo ? :public_read : :private
|
13
14
|
end
|
14
15
|
|
15
16
|
|
@@ -21,7 +22,7 @@ module FRM
|
|
21
22
|
def put(key,value,bucket)
|
22
23
|
@max_retries.times do |i|
|
23
24
|
begin
|
24
|
-
@s3.buckets[bucket].objects[key].write(value)
|
25
|
+
@s3.buckets[bucket].objects[key].write(value,acl: @acl)
|
25
26
|
return true
|
26
27
|
rescue Object => o
|
27
28
|
print_retry(__method__,o)
|
data/lib/frm/version.rb
CHANGED