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 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: