prm 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/prm.rb +5 -1
  2. data/prm/repo.rb +52 -0
  3. metadata +19 -5
data/prm.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require 'prm/trollop'
4
4
  require 'prm/repo'
5
5
 
6
- version_info = "0.0.1"
6
+ version_info = "0.0.4"
7
7
 
8
8
  opts = Trollop::options do
9
9
  version "Package Repository Manager #{version_info} - 2012 Brett Gailey"
@@ -14,6 +14,8 @@ opts = Trollop::options do
14
14
  opt :arch, "Architecture for repository (Multi arch supported by comma)", :type => :string, :require => true, :short => "-a"
15
15
  opt :gpg, "Sign release files with a GPG key (Expects GPG key to be available)", :default => false
16
16
  opt :generate, "Create new repository", :short => "-g"
17
+ opt :accesskey, "Access Key for DreamObjects", :type => :string
18
+ opt :secretkey, "Secret Key for DreamObjects", :type => :string
17
19
  end
18
20
 
19
21
  Trollop::die "No arguments" if opts.empty?
@@ -26,6 +28,8 @@ r.arch = opts[:arch]
26
28
  r.type = opts[:type]
27
29
  r.path = opts[:path]
28
30
  r.gpg = opts[:gpg]
31
+ r.accesskey = opts[:accesskey]
32
+ r.secretkey = opts[:secretkey]
29
33
 
30
34
  if opts[:generate]
31
35
  r.create
data/prm/repo.rb CHANGED
@@ -4,6 +4,8 @@ require 'zlib'
4
4
  require 'digest/md5'
5
5
  require 'peach'
6
6
  require 'erb'
7
+ require 'find'
8
+ require 'aws/s3'
7
9
 
8
10
  module Debian
9
11
  def build_apt_repo(path, component, arch, release, gpg)
@@ -124,9 +126,55 @@ module Debian
124
126
  end
125
127
  end
126
128
 
129
+ module DHO
130
+ def sync_to_dho(path, accesskey, secretkey)
131
+ AWS::S3::Base.establish_connection!(
132
+ :server => 'objects.dreamhost.com',
133
+ :use_ssl => true,
134
+ :access_key_id => accesskey,
135
+ :secret_access_key => secretkey
136
+ )
137
+
138
+ AWS::S3::Service.buckets.each do |bucket|
139
+ unless bucket == path
140
+ AWS::S3::Bucket.create(path)
141
+ end
142
+ end
143
+
144
+ new_content = Array.new
145
+ Find.find(path + "/") do |object|
146
+ object.slice!(path + "/")
147
+ if (object =~ /deb$/) || (object =~ /Release$/) || (object =~ /Packages.gz$/) || (object =~ /Packages$/) || (object =~ /gpg$/)
148
+ f = path + "/" + object
149
+ new_content << object
150
+ AWS::S3::S3Object.store(
151
+ object,
152
+ open(f),
153
+ path
154
+ )
155
+
156
+ policy = AWS::S3::S3Object.acl(object, path)
157
+ policy.grants = [ AWS::S3::ACL::Grant.grant(:public_read) ]
158
+ AWS::S3::S3Object.acl(object,path,policy)
159
+ end
160
+ end
161
+
162
+ bucket_info = AWS::S3::Bucket.find(path)
163
+ bucket_info.each do |obj|
164
+ o = obj.key
165
+ if (o =~ /deb$/) || (o =~ /Release$/) || (o =~ /Packages.gz$/) || (o =~ /Packages$/) || (o =~ /gpg$/)
166
+ unless new_content.include?(o)
167
+ AWS::S3::S3Object.delete(o,path)
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+
127
174
  class PRM
128
175
  class PRM::Repo
129
176
  include Debian
177
+ include DHO
130
178
 
131
179
  attr_accessor :path
132
180
  attr_accessor :type
@@ -134,12 +182,16 @@ class PRM
134
182
  attr_accessor :arch
135
183
  attr_accessor :release
136
184
  attr_accessor :gpg
185
+ attr_accessor :secretkey
186
+ attr_accessor :accesskey
137
187
 
138
188
  def create
139
189
  parch,pcomponent,prelease = _parse_vars(arch,component,release)
140
190
 
141
191
  if "#{@type}" == "deb"
142
192
  build_apt_repo(path,pcomponent,parch,prelease,gpg)
193
+ elsif "#{@type}" == "sync"
194
+ sync_to_dho(path, accesskey, secretkey)
143
195
  elsif "#{@type}" == "rpm"
144
196
  # add rpm stuff here
145
197
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brett Gailey
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-12-27 00:00:00 -08:00
18
+ date: 2013-01-21 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,21 @@ dependencies:
32
32
  version: "0"
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
- description: PRM (Package Repository Manager) is an Operating System independent Package Repository tool
35
+ - !ruby/object:Gem::Dependency
36
+ name: aws-s3
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ description: PRM (Package Repository Manager) is an Operating System independent Package Repository tool. PRM supports Repository syncing to DreamObjects
36
50
  email: brett.gailey@dreamhost.com
37
51
  executables:
38
52
  - prm