frm 0.0.5 → 0.0.7

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/lib/frm/base.rb CHANGED
@@ -1,12 +1,5 @@
1
1
  module FRM
2
2
  class Base
3
- # my_dir = File.dirname __FILE__
4
- # require File.join my_dir, 's3'
5
- require 'zlib'
6
- require 'tempfile'
7
- require 'digest/md5'
8
- require 'digest/sha1'
9
- require 'digest/sha2'
10
3
 
11
4
  def compute_md5(string)
12
5
  Digest::MD5.hexdigest(string)
@@ -73,9 +66,56 @@ module FRM
73
66
 
74
67
  def merge_package_file(in_pipe,out_pipe,package_list)
75
68
  sorted_list = package_list.sort { |a,b| a['Package'] <=> b['Package'] }
76
- # while (next_stub = parse_package_stub in_pipe)
77
- # STDERR.puts "next_stub[0] = #{next_stub[0]}"
78
- # end
69
+ merge(in_pipe,out_pipe,sorted_list)
79
70
  end
71
+
72
+ private
73
+
74
+ def create_package_stub(package_hash)
75
+ return_value = ''
76
+ package_hash.each do |key,value|
77
+ return_value << "#{key}: #{value}\n"
78
+ end
79
+ return_value << "\n"
80
+ end
81
+
82
+ def merge(in_pipe,out_pipe,package_list)
83
+ return if out_pipe.closed?
84
+ return if in_pipe.closed? and package_list.empty
85
+
86
+ if package_list.empty?
87
+ while line = in_pipe.gets
88
+ out_pipe.puts line
89
+ end
90
+ in_pipe.close
91
+ out_pipe.close
92
+ return
93
+ end
94
+
95
+ if in_pipe.closed?
96
+ package_list.each {|package_hash| out_pipe.write(create_package_stub(package_hash)) }
97
+ out_pipe.close
98
+ return
99
+ end
100
+
101
+ current_package, stub = parse_package_stub in_pipe
102
+
103
+ if current_package['Package'] < package_list.first['Package']
104
+ out_pipe.puts stub
105
+ out_pipe.puts ""
106
+ merge(in_pipe,out_pipe,package_list)
107
+ return
108
+ elsif current_package['Package'] > package_list.first['Package']
109
+ while ( ! package_list.empty? ) and current_package['Package'] > package_list.first['Package']
110
+ out_pipe.write create_package_stub(package_list.shift)
111
+ end
112
+ elsif current_package['Package'] == package_list.first['Package']
113
+ out_pipe.write create_package_stub(package_list.shift)
114
+ end
115
+
116
+ merge(in_pipe,out_pipe,package_list)
117
+ return nil
118
+ end
119
+
80
120
  end
81
121
  end
data/lib/frm/deb.rb CHANGED
@@ -1,152 +1,5 @@
1
- DEFAULT_HOST = 's3-us-west-1.amazonaws.com' # stupid hack to point to
2
- # the right region
3
-
4
1
  module FRM
5
2
 
6
- class Package < Base
7
- attr_accessor :repo_filename
8
- attr_reader :path, :content, :md5, :sha1, :sha2 , :size, :release
9
- def initialize(path,release='natty')
10
- raise "you need to specify a path!!!" if path.nil?
11
- @path = path
12
- raise "Can not find file '#{path}'" unless File.exists?(path)
13
- @release = release
14
- begin
15
- @content = File.read(path)
16
- rescue Object => o
17
- STDERR.puts "Could not open file '#{path}'. Exiting..."
18
- STDERR.puts o.inspect
19
- STDERR.puts o.backtrace
20
- raise "Could not open file '#{path}'. Exiting..."
21
- end
22
- @size = File.size(@path)
23
- @md5 = compute_md5(@content)
24
- @sha1 = compute_sha1(@content)
25
- @sha2 = compute_sha2(@content)
26
- end
27
- end
28
-
29
- class PackageRelease < Base
30
- attr_reader :packages, :standards_version, :priority, :package_file, :gzipped_package_file, :release_file, :short_release_file, :component, :release
31
- def initialize(packages={},release='natty',component='main/binary-amd64')
32
- @release = release
33
- @component = component
34
- @standards_version = standards_version
35
- @priority = priority
36
- @packages = []
37
- packages.each { |package| @packages << Package.new(package,@release) }
38
- @package_file = generate_package_file
39
- @gzipped_package_file = generate_gzip_pipe(@package_file).read
40
- @short_release_file = generate_short_release_file
41
- @release_file = generate_release_file
42
- end
43
-
44
- private
45
-
46
- def generate_release_file()
47
- partial_release_file = "Origin: apt.cloudscaling.com
48
- Label: apt repository #{@release}
49
- Codename: #{@release}
50
- Date: Thu, 22 Dec 2011 00:29:55 UTC
51
- Architectures: amd64
52
- Components: main universe multiverse
53
- Description: Cloudscaling APT repository
54
- MD5Sum:
55
- #{compute_md5(@package_file)} #{@package_file.size} #{@component}/Packages
56
- #{compute_md5(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
57
- #{compute_md5(@short_release_file)} #{@short_release_file.size} #{@component}/Release
58
- SHA1:
59
- #{compute_sha1(@package_file)} #{@package_file.size} #{@component}/Packages
60
- #{compute_sha1(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
61
- #{compute_sha1(@short_release_file)} #{@short_release_file.size} #{@component}/Release
62
- SHA256:
63
- #{compute_sha2(@package_file)} #{@package_file.size} #{@component}/Packages
64
- #{compute_sha2(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
65
- #{compute_sha2(@short_release_file)} #{@short_release_file.size} #{@component}/Release
66
- "
67
- return partial_release_file
68
- end
69
-
70
- def generate_short_release_file
71
- "Component: main
72
- Origin: apt.cloudscaling.com
73
- Label: apt repository #{@release}
74
- Architecture: amd64
75
- Description: Cloudscaling APT repository
76
- "
77
- end
78
-
79
-
80
- def filename(package)
81
- filename = File.basename package.path
82
- shortname = `dpkg --field #{package.path} Package`.chomp
83
- first_letter = shortname[0]
84
- package.repo_filename = "pool/main/#{first_letter}/#{shortname}/#{filename}"
85
- end
86
-
87
- def generate_package_file()
88
- package_file = ''
89
- @packages.each { |package| package_file << generate_package_stub(package) }
90
- return package_file
91
- end
92
-
93
- def generate_package_stub(package)
94
- package_stub = ''
95
- package_stub << `dpkg --field #{package.path}`
96
- package_stub << "Filename: #{filename(package)}\n"
97
- package_stub << "Size: #{package.size}\n"
98
- package_stub << "MD5sum: #{package.md5}\n"
99
- package_stub << "SHA1: #{package.sha1}\n"
100
- package_stub << "SHA256: #{package.sha2}\n"
101
- package_stub << "\n"
102
- return package_stub
103
- end
104
- end
105
-
106
- class ReleasePusher < Base
107
- def initialize(package_release,access_key,secret_key,bucket,prefix,server='s3-us-west-1.amazonaws.com')
108
- @release = package_release.release
109
- @bucket = bucket
110
- @prefix = prefix
111
- @s3 = FRM::S3.new(access_key,secret_key,server)
112
- push_packages(package_release.packages)
113
- push_release_files(package_release)
114
- end
115
-
116
- private
117
-
118
-
119
- def push_release_files(package_release)
120
- # TODO: un-hardcode this
121
- release_path = @prefix + "/dists/#{@release}/Release"
122
- @s3.put(release_path,package_release.release_file,@bucket)
123
-
124
- in_release_path = @prefix + "/dists/#{@release}/InRelease"
125
- @s3.put(in_release_path,gpg_clearsign(package_release.release_file),@bucket)
126
-
127
- gpg_release_path = @prefix + "/dists/#{@release}/Release.gpg"
128
- @s3.put(gpg_release_path,gpg_detached(package_release.release_file),@bucket)
129
-
130
- release_file_path = @prefix + "/dists/#{@release}/" + package_release.component
131
- @s3.put(release_file_path + '/Release',package_release.short_release_file,@bucket)
132
- @s3.put(release_file_path + '/Packages',package_release.package_file,@bucket)
133
- @s3.put(release_file_path + '/Packages.gz',package_release.gzipped_package_file,@bucket)
134
- end
135
-
136
-
137
- def push_packages(packages)
138
- packages.each { |package| push_package(package) }
139
- end
140
-
141
- def push_package(package)
142
- remote_path = @prefix + '/' + package.repo_filename
143
- @s3.put(remote_path,package.content,@bucket)
144
- end
145
-
146
-
147
- end
148
-
149
-
150
3
 
151
4
  class Deb < Base
152
5
 
@@ -154,7 +7,7 @@ Description: Cloudscaling APT repository
154
7
  end
155
8
 
156
9
  def generate_package_file(in_packages=[])
157
- packages = in_packages.dup
10
+ packages = in_packages.sort { |a,b| a['Package'] <=> b['Package'] }
158
11
  package_file = ''
159
12
  packages.each { |package| package_file << generate_package_stub(package) }
160
13
  return package_file
@@ -0,0 +1,24 @@
1
+ module FRM
2
+ class Package < Base
3
+ attr_accessor :repo_filename
4
+ attr_reader :path, :content, :md5, :sha1, :sha2 , :size, :release
5
+ def initialize(path,release='natty')
6
+ raise "you need to specify a path!!!" if path.nil?
7
+ @path = path
8
+ raise "Can not find file '#{path}'" unless File.exists?(path)
9
+ @release = release
10
+ begin
11
+ @content = File.read(path)
12
+ rescue Object => o
13
+ STDERR.puts "Could not open file '#{path}'. Exiting..."
14
+ STDERR.puts o.inspect
15
+ STDERR.puts o.backtrace
16
+ raise "Could not open file '#{path}'. Exiting..."
17
+ end
18
+ @size = File.size(@path)
19
+ @md5 = compute_md5(@content)
20
+ @sha1 = compute_sha1(@content)
21
+ @sha2 = compute_sha2(@content)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,107 @@
1
+ module FRM
2
+
3
+ class PackageRelease < Base
4
+ attr_reader :packages, :standards_version, :priority, :package_file, :gzipped_package_file, :release_file, :short_release_file, :component, :release, :i386_release_file, :i386_packages_file, :gzipped_i386_packages_file
5
+ def initialize(packages={},release='natty',component='main/binary-amd64')
6
+ @release = release
7
+ @component = component
8
+ @standards_version = standards_version
9
+ @priority = priority
10
+ @packages = []
11
+ packages.each { |package| @packages << Package.new(package,@release) }
12
+ if component == 'main/binary-amd64'
13
+ generate_i386_stubs
14
+ end
15
+ @i386_release_file = <<EOF
16
+ Component: main
17
+ Origin: apt.cloudscaling.com
18
+ Label: apt repository #{@release}
19
+ Architecture: i386
20
+ Description: Cloudscaling APT repository
21
+ EOF
22
+ @i386_packages_file = ""
23
+ @gzipped_i386_packages_file = generate_gzip_pipe(@i386_packages_file).read
24
+ @package_file = generate_package_file
25
+ @gzipped_package_file = generate_gzip_pipe(@package_file).read
26
+ @short_release_file = generate_short_release_file
27
+ @release_file = generate_release_file
28
+ end
29
+
30
+ private
31
+
32
+
33
+ # ubuntu precicse 64 wants i386 debs by default :\
34
+ def generate_i386_stubs()
35
+ end
36
+
37
+
38
+ def generate_release_file()
39
+ partial_release_file = "Origin: apt.cloudscaling.com
40
+ Label: apt repository #{@release}
41
+ Codename: #{@release}
42
+ Date: Thu, 22 Dec 2011 00:29:55 UTC
43
+ Architectures: amd64 i386
44
+ Components: main universe multiverse
45
+ Description: Cloudscaling APT repository
46
+ MD5Sum:
47
+ #{compute_md5(@package_file)} #{@package_file.size} #{@component}/Packages
48
+ #{compute_md5(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
49
+ #{compute_md5(@short_release_file)} #{@short_release_file.size} #{@component}/Release
50
+ #{compute_md5(@i386_packages_file)} #{@i386_packages_file.size} main/binary-i386/Packages
51
+ #{compute_md5(@gzipped_i386_packages_file)} #{@gzipped_i386_packages_file.size} main/binary-i386/Packages.gz
52
+ #{compute_md5(@i386_release_file)} #{@i386_release_file.size} main/binary-i386/Release
53
+ SHA1:
54
+ #{compute_sha1(@package_file)} #{@package_file.size} #{@component}/Packages
55
+ #{compute_sha1(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
56
+ #{compute_sha1(@short_release_file)} #{@short_release_file.size} #{@component}/Release
57
+ #{compute_sha1(@i386_packages_file)} #{@i386_packages_file.size} main/binary-i386/Packages
58
+ #{compute_sha1(@gzipped_i386_packages_file)} #{@gzipped_i386_packages_file.size} main/binary-i386/Packages.gz
59
+ #{compute_sha1(@i386_release_file)} #{@i386_release_file.size} main/binary-i386/Release
60
+ SHA256:
61
+ #{compute_sha2(@package_file)} #{@package_file.size} #{@component}/Packages
62
+ #{compute_sha2(@gzipped_package_file)} #{@gzipped_package_file.size} #{@component}/Packages.gz
63
+ #{compute_sha2(@short_release_file)} #{@short_release_file.size} #{@component}/Release
64
+ #{compute_sha2(@i386_packages_file)} #{@i386_packages_file.size} main/binary-i386/Packages
65
+ #{compute_sha2(@gzipped_i386_packages_file)} #{@gzipped_i386_packages_file.size} main/binary-i386/Packages.gz
66
+ #{compute_sha2(@i386_release_file)} #{@i386_release_file.size} main/binary-i386/Release
67
+ "
68
+ return partial_release_file
69
+ end
70
+
71
+
72
+ def generate_short_release_file
73
+ "Component: main
74
+ Origin: apt.cloudscaling.com
75
+ Label: apt repository #{@release}
76
+ Architecture: amd64
77
+ Description: Cloudscaling APT repository
78
+ "
79
+ end
80
+
81
+
82
+ def filename(package)
83
+ filename = File.basename package.path
84
+ shortname = `dpkg --field #{package.path} Package`.chomp
85
+ first_letter = shortname[0]
86
+ package.repo_filename = "pool/main/#{first_letter}/#{shortname}/#{filename}"
87
+ end
88
+
89
+ def generate_package_file()
90
+ package_file = ''
91
+ @packages.each { |package| package_file << generate_package_stub(package) }
92
+ return package_file
93
+ end
94
+
95
+ def generate_package_stub(package)
96
+ package_stub = ''
97
+ package_stub << `dpkg --field #{package.path}`
98
+ package_stub << "Filename: #{filename(package)}\n"
99
+ package_stub << "Size: #{package.size}\n"
100
+ package_stub << "MD5sum: #{package.md5}\n"
101
+ package_stub << "SHA1: #{package.sha1}\n"
102
+ package_stub << "SHA256: #{package.sha2}\n"
103
+ package_stub << "\n"
104
+ return package_stub
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,52 @@
1
+ module FRM
2
+
3
+ class ReleasePusher < Base
4
+ def initialize(package_release,access_key,secret_key,bucket,prefix,server='s3-us-west-1.amazonaws.com')
5
+ @release = package_release.release
6
+ @bucket = bucket
7
+ @prefix = prefix
8
+ @s3 = FRM::S3.new(access_key,secret_key,server)
9
+ push_packages(package_release.packages)
10
+ push_release_files(package_release)
11
+ end
12
+
13
+ private
14
+
15
+
16
+ def push_release_files(package_release)
17
+ # TODO: un-hardcode this
18
+ release_path = @prefix + "/dists/#{@release}/Release"
19
+ @s3.put(release_path,package_release.release_file,@bucket)
20
+
21
+ in_release_path = @prefix + "/dists/#{@release}/InRelease"
22
+ @s3.put(in_release_path,gpg_clearsign(package_release.release_file),@bucket)
23
+
24
+ gpg_release_path = @prefix + "/dists/#{@release}/Release.gpg"
25
+ @s3.put(gpg_release_path,gpg_detached(package_release.release_file),@bucket)
26
+
27
+ release_file_path = @prefix + "/dists/#{@release}/" + package_release.component
28
+ @s3.put(release_file_path + '/Release',package_release.short_release_file,@bucket)
29
+ @s3.put(release_file_path + '/Packages',package_release.package_file,@bucket)
30
+ @s3.put(release_file_path + '/Packages.gz',package_release.gzipped_package_file,@bucket)
31
+
32
+
33
+ i386_release_file_path = @prefix + "/dists/#{@release}/" + 'main/binary-i386'
34
+ @s3.put(i386_release_file_path + '/Release',package_release.i386_release_file,@bucket)
35
+ @s3.put(i386_release_file_path + '/Packages',package_release.i386_packages_file,@bucket)
36
+ @s3.put(i386_release_file_path + '/Packages.gz',package_release.gzipped_i386_packages_file,@bucket)
37
+ end
38
+
39
+
40
+ def push_packages(packages)
41
+ packages.each { |package| push_package(package) }
42
+ end
43
+
44
+ def push_package(package)
45
+ remote_path = @prefix + '/' + package.repo_filename
46
+ @s3.put(remote_path,package.content,@bucket)
47
+ end
48
+
49
+
50
+ end
51
+
52
+ end
data/lib/frm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Frm
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/frm.rb CHANGED
@@ -1,3 +1,15 @@
1
+ DEFAULT_HOST = 's3-us-west-1.amazonaws.com' # stupid hack to point to the right s3 region
2
+
3
+ require 'zlib'
4
+ require 'tempfile'
5
+ require 'digest/md5'
6
+ require 'digest/sha1'
7
+ require 'digest/sha2'
8
+
1
9
  require 'frm/base'
2
10
  require 'frm/s3'
11
+ require 'frm/package'
12
+ require 'frm/release'
13
+ require 'frm/release_pusher'
3
14
  require 'frm/deb'
15
+
data/test/deb_test.rb CHANGED
@@ -94,7 +94,7 @@ Description: Cloudscaling APT repository
94
94
  Label: apt repository natty
95
95
  Codename: natty
96
96
  Date: Thu, 22 Dec 2011 00:29:55 UTC
97
- Architectures: amd64
97
+ Architectures: amd64 i386
98
98
  Components: main universe multiverse
99
99
  Description: Cloudscaling APT repository
100
100
  MD5Sum:
@@ -178,6 +178,17 @@ class TestDeb < MiniTest::Unit::TestCase
178
178
  "Depends" => %w{one two three},
179
179
  "section" => "main",
180
180
  "path_to_deb" => '/tmp/bar_1.2.3.4_amd64.deb'
181
+ },
182
+ {
183
+ "Package" => "qqq",
184
+ "Version" => "1.2.3.4",
185
+ "Architecture" => "amd64",
186
+ "Maintainer" => "support@cloudscaling.com",
187
+ "Homepage" => "http://www.cloudscaling.com",
188
+ "Priority" => "extra",
189
+ "Depends" => %w{one two three},
190
+ "section" => "main",
191
+ "path_to_deb" => '/tmp/bar_1.2.3.4_amd64.deb'
181
192
  }
182
193
  ]
183
194
  end
@@ -214,7 +225,21 @@ Description: some
214
225
 
215
226
 
216
227
  def test_generate_package_file
217
- correct_output = "Package: foo
228
+ correct_output = 'Package: bar
229
+ Version: 1.2.3.4
230
+ Architecture: amd64
231
+ Maintainer: <support@cloudscaling.com>
232
+ Homepage: http://www.cloudscaling.com
233
+ Priority: extra
234
+ Depends: one, two, three
235
+ Filename: pool/main/b/bar/bar_1.2.3.4_amd64.deb
236
+ Size: 3
237
+ MD5sum: 37b51d194a7513e45b56f6524f2d51f2
238
+ SHA1: 62cdb7020ff920e5aa642c3d4066950dd1f01f4d
239
+ SHA256: fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9
240
+ Description: no description given
241
+
242
+ Package: foo
218
243
  Version: 1.2.68
219
244
  Architecture: amd64
220
245
  Maintainer: <support@cloudscaling.com>
@@ -230,21 +255,21 @@ Description: some
230
255
  multiline
231
256
  description
232
257
 
233
- Package: bar
258
+ Package: qqq
234
259
  Version: 1.2.3.4
235
260
  Architecture: amd64
236
261
  Maintainer: <support@cloudscaling.com>
237
262
  Homepage: http://www.cloudscaling.com
238
263
  Priority: extra
239
264
  Depends: one, two, three
240
- Filename: pool/main/b/bar/bar_1.2.3.4_amd64.deb
265
+ Filename: pool/main/q/qqq/qqq_1.2.3.4_amd64.deb
241
266
  Size: 3
242
267
  MD5sum: 37b51d194a7513e45b56f6524f2d51f2
243
268
  SHA1: 62cdb7020ff920e5aa642c3d4066950dd1f01f4d
244
269
  SHA256: fcde2b2edba56bf408601fb721fe9b5c338d10ee429ea04fae5511b68fbf8fb9
245
270
  Description: no description given
246
271
 
247
- "
272
+ '
248
273
  assert @deb.generate_package_file(@hash) == correct_output
249
274
  end
250
275
 
@@ -329,9 +354,8 @@ Description: no description given
329
354
  def test_merge_package_file
330
355
  package_file = File.open File.join @@frm_test_base, 'Packages.txt'
331
356
  read_buffer, write_buffer = IO.pipe
332
-
333
- @deb.merge_package_file(package_file,write_buffer,@hash)
334
-
357
+ merged_list = @deb.merge_package_file(package_file,write_buffer,@hash)
358
+ assert true
335
359
  end
336
360
 
337
361
 
metadata CHANGED
@@ -1,58 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: frm
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 5
9
- version: 0.0.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Martin Rhoads
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-05-23 00:00:00 -07:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: aws-s3
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
31
22
  type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: mock-aws-s3
35
23
  prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: mock-aws-s3
32
+ requirement: !ruby/object:Gem::Requirement
37
33
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
44
38
  type: :development
45
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
46
  description: FRM makes it easy to build package repositories on S3
47
- email:
47
+ email:
48
48
  - ermal14@gmail.com
49
- executables:
49
+ executables:
50
50
  - frm
51
51
  extensions: []
52
-
53
52
  extra_rdoc_files: []
54
-
55
- files:
53
+ files:
56
54
  - .gitignore
57
55
  - Gemfile
58
56
  - LICENSE
@@ -63,6 +61,9 @@ files:
63
61
  - lib/frm.rb
64
62
  - lib/frm/base.rb
65
63
  - lib/frm/deb.rb
64
+ - lib/frm/package.rb
65
+ - lib/frm/release.rb
66
+ - lib/frm/release_pusher.rb
66
67
  - lib/frm/s3.rb
67
68
  - lib/frm/version.rb
68
69
  - test/Packages.txt
@@ -73,37 +74,36 @@ files:
73
74
  - test/lib/test.rb
74
75
  - test/rake.rb
75
76
  - test/s3.rb
76
- has_rdoc: true
77
77
  homepage: https://github.com/ermal14/frm
78
78
  licenses: []
79
-
80
79
  post_install_message:
81
80
  rdoc_options: []
82
-
83
- require_paths:
81
+ require_paths:
84
82
  - lib
85
- required_ruby_version: !ruby/object:Gem::Requirement
83
+ required_ruby_version: !ruby/object:Gem::Requirement
86
84
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- segments:
91
- - 0
92
- version: "0"
93
- required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
90
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- segments:
99
- - 0
100
- version: "0"
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
101
95
  requirements: []
102
-
103
96
  rubyforge_project: frm
104
- rubygems_version: 1.3.7.1
97
+ rubygems_version: 1.8.23
105
98
  signing_key:
106
99
  specification_version: 3
107
100
  summary: Effin Repo Manager
108
- test_files: []
109
-
101
+ test_files:
102
+ - test/Packages.txt
103
+ - test/deb.rb
104
+ - test/deb_test.rb
105
+ - test/debs/frm_bar-1.0.0.deb
106
+ - test/debs/frm_foo-1.0.0.deb
107
+ - test/lib/test.rb
108
+ - test/rake.rb
109
+ - test/s3.rb