frm 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -5,3 +5,5 @@ pkg/*
5
5
  *~
6
6
  *.swp
7
7
  tmp/*
8
+ \#*\#
9
+ .\#*
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!"
@@ -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
- `echo "#{message}" | gpg --clearsign`
31
+ run "echo '#{message}' | gpg --clearsign"
21
32
  end
22
33
 
23
34
  # TODO: same as above
24
35
  def gpg_detached(message)
25
- `echo "#{message}" | gpg -abs`
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
 
@@ -81,7 +81,7 @@ Description: Cloudscaling APT repository
81
81
 
82
82
  def filename(package)
83
83
  filename = File.basename package.path
84
- shortname = `dpkg --field #{package.path} Package`.chomp
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 << `dpkg --field #{package.path}`
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"
@@ -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
 
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Frm
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: