right_publish 0.4.2 → 0.5.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ ### 0.5.0
2
+ * Add mutex to separate right_publish from overwriting the same repo
data/Gemfile CHANGED
@@ -18,5 +18,5 @@ group :development do
18
18
  gem "flexmock", "~> 0.9"
19
19
  gem "simplecov"
20
20
  gem "ruby-debug", ">= 0.10", :platforms => :ruby_18
21
- gem "ruby-debug19", ">= 0.11.6", :platforms => :ruby_19
21
+ gem 'debugger', :platforms => :ruby_19
22
22
  end
data/Gemfile.lock CHANGED
@@ -19,16 +19,21 @@ GEM
19
19
  activesupport (= 2.3.18)
20
20
  rack (~> 1.1.0)
21
21
  activesupport (2.3.18)
22
- archive-tar-minitar (0.5.2)
23
22
  builder (3.2.0)
24
- columnize (0.3.6)
23
+ columnize (0.8.9)
25
24
  cucumber (1.2.5)
26
25
  builder (>= 2.1.2)
27
26
  diff-lcs (>= 1.1.3)
28
27
  gherkin (~> 2.11.7)
29
28
  multi_json (~> 1.3)
29
+ debugger (1.6.7)
30
+ columnize (>= 0.3.1)
31
+ debugger-linecache (~> 1.2.0)
32
+ debugger-ruby_core_source (~> 1.3.5)
33
+ debugger-linecache (1.2.0)
34
+ debugger-ruby_core_source (1.3.5)
30
35
  diff-lcs (1.2.3)
31
- excon (0.20.1)
36
+ excon (0.25.3)
32
37
  flexmock (0.9.0)
33
38
  fog (1.10.1)
34
39
  builder
@@ -52,8 +57,6 @@ GEM
52
57
  json (1.7.7)
53
58
  linecache (0.46)
54
59
  rbx-require-relative (> 0.0.4)
55
- linecache19 (0.5.12)
56
- ruby_core_source (>= 0.1.4)
57
60
  mime-types (1.22)
58
61
  multi_json (1.7.2)
59
62
  net-scp (1.1.0)
@@ -79,17 +82,7 @@ GEM
79
82
  ruby-debug-base (~> 0.10.4.0)
80
83
  ruby-debug-base (0.10.4)
81
84
  linecache (>= 0.3)
82
- ruby-debug-base19 (0.11.25)
83
- columnize (>= 0.3.1)
84
- linecache19 (>= 0.5.11)
85
- ruby_core_source (>= 0.1.4)
86
- ruby-debug19 (0.11.6)
87
- columnize (>= 0.3.1)
88
- linecache19 (>= 0.5.11)
89
- ruby-debug-base19 (>= 0.11.19)
90
85
  ruby-hmac (0.4.0)
91
- ruby_core_source (0.1.5)
92
- archive-tar-minitar (>= 0.5.2)
93
86
  simplecov (0.7.1)
94
87
  multi_json (~> 1.0)
95
88
  simplecov-html (~> 0.7.1)
@@ -101,6 +94,7 @@ PLATFORMS
101
94
 
102
95
  DEPENDENCIES
103
96
  builder
97
+ debugger
104
98
  excon (<= 0.25.3)
105
99
  flexmock (~> 0.9)
106
100
  fog (~> 1.9)
@@ -111,6 +105,5 @@ DEPENDENCIES
111
105
  right_develop (~> 1.0)!
112
106
  rspec (~> 2.0)
113
107
  ruby-debug (>= 0.10)
114
- ruby-debug19 (>= 0.11.6)
115
108
  simplecov
116
109
  trollop (~> 2.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.5.0
data/bin/right_publish CHANGED
@@ -1,4 +1,5 @@
1
1
  #! /usr/bin/env ruby
2
-
2
+ libdir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
3
4
  require 'right_publish'
4
5
  RightPublish::CLI.run()
@@ -1,5 +1,6 @@
1
1
  require 'right_publish/profile'
2
2
  require 'right_publish/storage'
3
+ require 'time'
3
4
 
4
5
  module RightPublish
5
6
 
@@ -32,19 +33,21 @@ module RightPublish
32
33
  end
33
34
 
34
35
  class Repo
36
+
37
+ LOCK_FILE_NAME = 'lock.txt'
38
+ LOCK_PERIOD = 30 * 60 # 30 minutes
39
+ LOCK_RETRY_INTERVAL = 1 * 60 # 1 minute
40
+
35
41
  def initialize(option_key)
36
42
  @repository_type ||= option_key
37
43
  end
38
44
 
39
45
  # Sync files from remote to local storage
40
46
  def pull()
41
- Profile.log("Fetching #{repo_human_name(@repository_type)} files from remote...")
47
+ Profile.log("Fetching #{repo_human_name} files from remote...")
42
48
 
43
49
  begin
44
- sync_dirs(
45
- get_storage(Profile.config[:remote_storage][:provider]),
46
- get_storage(Profile.config[:local_storage][:provider]),
47
- Profile.config[@repository_type][:subdir])
50
+ sync_dirs(remote_storage, local_storage, repo_config[:subdir])
48
51
  rescue Exception => e
49
52
  RightPublish::Profile.log("Could not synchronize storage:\n\t#{e}", :error)
50
53
  raise RuntimeError, "pull from remote failed."
@@ -53,13 +56,10 @@ module RightPublish
53
56
 
54
57
  # Sync files from local to remote storage
55
58
  def push()
56
- Profile.log("Committing local #{repo_human_name(@repository_type)} files to remote...")
59
+ Profile.log("Committing local #{repo_human_name} files to remote...")
57
60
 
58
61
  begin
59
- sync_dirs(
60
- get_storage(Profile.config[:local_storage][:provider]),
61
- get_storage(Profile.config[:remote_storage][:provider]),
62
- Profile.config[@repository_type][:subdir])
62
+ sync_dirs(local_storage, remote_storage, repo_config[:subdir])
63
63
  rescue Exception => e
64
64
  RightPublish::Profile.log("Could not sychronize storage:\n\t#{e}", :error)
65
65
  raise RuntimeError, "push to remote failed."
@@ -70,14 +70,12 @@ module RightPublish
70
70
  # @option options [String] :subdir a subdirectory (common prefix); only files matching this prefix will be included
71
71
  # @option options [Array] :filter a whitelist of String glob patterns to filter files, i.e. ["*.rpm", "*.deb"]
72
72
  def annotate(options={})
73
- Profile.log("Creating HTML directory listing for #{repo_human_name(@repository_type)} files...")
73
+ Profile.log("Creating HTML directory listing for #{repo_human_name} files...")
74
74
 
75
75
  options[:subdir] ||= repo_config[:subdir]
76
76
 
77
77
  files = []
78
- RightPublish::Storage.ls(
79
- get_storage(Profile.config[:local_storage][:provider]),
80
- :subdir => options[:subdir]) do |file|
78
+ RightPublish::Storage.ls(local_storage, :subdir => options[:subdir]) do |file|
81
79
  files << file
82
80
  end
83
81
 
@@ -90,17 +88,19 @@ module RightPublish
90
88
  html = RightPublish::Annotation.generate_html(files, strip, html_options)
91
89
 
92
90
  output = File.join(repo_config[:subdir], 'index.html')
93
- local_dir = get_storage(Profile.config[:local_storage][:provider]).get_directories
91
+ local_dir = local_storage.get_directories
94
92
  local_dir.files.create(:key => output, :body => html)
95
93
  end
96
94
 
97
95
  # Perform one-shot publish of one or more packages.
98
96
  # "One-shot" means: pull, add, annotate and push.
99
97
  def publish(file_or_dir, target)
100
- pull
101
- add(file_or_dir, target)
102
- annotate
103
- push
98
+ lock do
99
+ pull
100
+ add(file_or_dir, target)
101
+ annotate
102
+ push
103
+ end
104
104
  end
105
105
 
106
106
  # Add a new package to local storage and reindex if necessary
@@ -110,6 +110,40 @@ module RightPublish
110
110
 
111
111
  private
112
112
 
113
+ def lock(&block)
114
+ while( (_lock_time = lock_time) != nil && Time.now.utc <= _lock_time ) do
115
+ Profile.log "Lock is set to expire at #{_lock_time}, waiting for #{LOCK_RETRY_INTERVAL} second(s) ..."
116
+ sleep LOCK_RETRY_INTERVAL
117
+ end
118
+ file = update_lock_time(LOCK_PERIOD)
119
+ Profile.log "#{repo_human_name} has been locked for #{LOCK_PERIOD/60} minute(s)."
120
+ yield
121
+ file.destroy
122
+ Profile.log "#{repo_human_name} has been unlocked."
123
+ end
124
+
125
+ def lock_time
126
+ if lock_file
127
+ return Time.parse(lock_file.body)
128
+ else
129
+ nil
130
+ end
131
+ end
132
+
133
+ def update_lock_time(timeout)
134
+ remote_storage.get_directories.files.create(:key => lock_file_path, :body => (Time.now.utc + timeout).to_s, :acl=>'public-read', :content_type => 'text/plain')
135
+ end
136
+
137
+ def lock_file
138
+ remote_storage.get_directories.files.get(lock_file_path)
139
+ rescue Excon::Errors::NotFound
140
+ nil
141
+ end
142
+
143
+ def lock_file_path
144
+ File.join(repo_config[:subdir], LOCK_FILE_NAME)
145
+ end
146
+
113
147
  def build_glob(ext)
114
148
  # Transform array into glob compliant pattern
115
149
  '{'.concat Array(ext).join(',').concat '}'
@@ -161,6 +195,16 @@ module RightPublish
161
195
  system("#{autosign} #{cmd}")
162
196
  end
163
197
 
198
+ # proxy method
199
+ def remote_storage
200
+ get_storage(Profile.config[:remote_storage][:provider])
201
+ end
202
+
203
+ # proxy method
204
+ def local_storage
205
+ get_storage(Profile.config[:local_storage][:provider])
206
+ end
207
+
164
208
  def get_storage(provider)
165
209
  type = RightPublish::StorageManager.storage_types[provider]
166
210
  RightPublish::StorageManager.get_storage(type)
@@ -168,7 +212,7 @@ module RightPublish
168
212
 
169
213
  def install_file(file, dest)
170
214
  Profile.log("#{file} => #{dest}")
171
- local_dir = get_storage(Profile.config[:local_storage][:provider]).get_directories
215
+ local_dir = local_storage.get_directories
172
216
  File.open(file, "rb") { |chunk| local_dir.files.create(:key => File.join(dest, File.basename(file)), :body => chunk) }
173
217
  end
174
218
 
@@ -181,8 +225,8 @@ module RightPublish
181
225
  Profile.config[@repository_type]
182
226
  end
183
227
 
184
- def repo_human_name(type)
185
- type.to_s.sub(/_/, ' ')
228
+ def repo_human_name
229
+ @repository_type.to_s.sub(/_/, ' ')
186
230
  end
187
231
 
188
232
  def sync_dirs(src, dest, subdir='')
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "right_publish"
8
- s.version = "0.4.2"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Szmyd", "Tony Spataro"]
12
- s.date = "2013-11-01"
12
+ s.date = "2014-05-28"
13
13
  s.description = "A tool for maintaining S3-based DEB, GEM and RPM packages."
14
14
  s.email = "support@rightscale.com"
15
15
  s.executables = ["autosign.expect", "right_publish"]
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".gitignore",
21
21
  ".rspec",
22
+ "CHANGELOG.md",
22
23
  "Gemfile",
23
24
  "Gemfile.lock",
24
25
  "README.rdoc",
@@ -75,7 +76,7 @@ Gem::Specification.new do |s|
75
76
  s.add_development_dependency(%q<flexmock>, ["~> 0.9"])
76
77
  s.add_development_dependency(%q<simplecov>, [">= 0"])
77
78
  s.add_development_dependency(%q<ruby-debug>, [">= 0.10"])
78
- s.add_development_dependency(%q<ruby-debug19>, [">= 0.11.6"])
79
+ s.add_development_dependency(%q<debugger>, [">= 0"])
79
80
  else
80
81
  s.add_dependency(%q<builder>, [">= 0"])
81
82
  s.add_dependency(%q<fog>, ["~> 1.9"])
@@ -90,7 +91,7 @@ Gem::Specification.new do |s|
90
91
  s.add_dependency(%q<flexmock>, ["~> 0.9"])
91
92
  s.add_dependency(%q<simplecov>, [">= 0"])
92
93
  s.add_dependency(%q<ruby-debug>, [">= 0.10"])
93
- s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
94
+ s.add_dependency(%q<debugger>, [">= 0"])
94
95
  end
95
96
  else
96
97
  s.add_dependency(%q<builder>, [">= 0"])
@@ -106,7 +107,7 @@ Gem::Specification.new do |s|
106
107
  s.add_dependency(%q<flexmock>, ["~> 0.9"])
107
108
  s.add_dependency(%q<simplecov>, [">= 0"])
108
109
  s.add_dependency(%q<ruby-debug>, [">= 0.10"])
109
- s.add_dependency(%q<ruby-debug19>, [">= 0.11.6"])
110
+ s.add_dependency(%q<debugger>, [">= 0"])
110
111
  end
111
112
  end
112
113
 
@@ -13,6 +13,7 @@ describe RightPublish::AptRepo do
13
13
  obj.should_receive(:do_in_subdir).and_return {|dir,block| block.call}
14
14
  obj.should_receive(:prune_all)
15
15
  obj.should_receive(:write_conf_file)
16
+ obj.should_receive(:lock).and_yield
16
17
  end
17
18
 
18
19
  flexmock(RightPublish::Profile) do |obj|
@@ -10,6 +10,7 @@ describe RightPublish::GemRepo do
10
10
  obj.should_receive(:annotate)
11
11
  obj.should_receive(:push)
12
12
  obj.should_receive(:do_in_subdir).and_return {|dir,block| block.call}
13
+ obj.should_receive(:lock).and_yield
13
14
  end
14
15
 
15
16
  flexmock(File) { |obj| obj.should_receive(:file?).and_return(true) }
@@ -22,6 +22,7 @@ describe RightPublish::YumRepo do
22
22
  obj.should_receive(:do_in_subdir).and_return {|dir,block| block.call}
23
23
  obj.should_receive(:yum_prune)
24
24
  obj.should_receive(:pkg_parts).and_return { |pkg| pkg_parts(pkg) }
25
+ obj.should_receive(:lock).and_yield
25
26
  end
26
27
 
27
28
  flexmock(RightPublish::Profile) do |obj|
data/spec/spec_helper.rb CHANGED
@@ -22,7 +22,7 @@
22
22
  require 'rubygems'
23
23
  require 'bundler/setup'
24
24
  require 'flexmock'
25
- require 'ruby-debug'
25
+ require 'debugger'
26
26
  require 'simplecov' unless RUBY_VERSION =~ /1\.8/
27
27
 
28
28
  # This is a Jewelerized project; it won't be activated as a gem when invoked in situ.
metadata CHANGED
@@ -1,247 +1,253 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: right_publish
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 2
10
- version: 0.4.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Brian Szmyd
14
9
  - Tony Spataro
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2013-11-18 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
13
+ date: 2014-05-28 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: builder
17
+ requirement: !ruby/object:Gem::Requirement
23
18
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
31
23
  type: :runtime
32
- requirement: *id001
33
24
  prerelease: false
34
- name: builder
35
- - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: fog
33
+ requirement: !ruby/object:Gem::Requirement
37
34
  none: false
38
- requirements:
35
+ requirements:
39
36
  - - ~>
40
- - !ruby/object:Gem::Version
41
- hash: 29
42
- segments:
43
- - 1
44
- - 9
45
- version: "1.9"
37
+ - !ruby/object:Gem::Version
38
+ version: '1.9'
46
39
  type: :runtime
47
- requirement: *id002
48
40
  prerelease: false
49
- name: fog
50
- - !ruby/object:Gem::Dependency
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
52
42
  none: false
53
- requirements:
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.9'
47
+ - !ruby/object:Gem::Dependency
48
+ name: excon
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
54
52
  - - <=
55
- - !ruby/object:Gem::Version
56
- hash: 125
57
- segments:
58
- - 0
59
- - 25
60
- - 3
53
+ - !ruby/object:Gem::Version
61
54
  version: 0.25.3
62
55
  type: :runtime
63
- requirement: *id003
64
56
  prerelease: false
65
- name: excon
66
- - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
68
58
  none: false
69
- requirements:
70
- - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 15
73
- segments:
74
- - 1
75
- - 0
76
- version: "1.0"
77
- type: :runtime
78
- requirement: *id004
79
- prerelease: false
59
+ requirements:
60
+ - - <=
61
+ - !ruby/object:Gem::Version
62
+ version: 0.25.3
63
+ - !ruby/object:Gem::Dependency
80
64
  name: mime-types
81
- - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
83
66
  none: false
84
- requirements:
67
+ requirements:
85
68
  - - ~>
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 2
90
- - 0
91
- version: "2.0"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
92
71
  type: :runtime
93
- requirement: *id005
94
72
  prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '1.0'
79
+ - !ruby/object:Gem::Dependency
95
80
  name: trollop
96
- - !ruby/object:Gem::Dependency
97
- version_requirements: &id006 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
98
82
  none: false
99
- requirements:
83
+ requirements:
100
84
  - - ~>
101
- - !ruby/object:Gem::Version
102
- hash: 25
103
- segments:
104
- - 0
105
- - 9
106
- version: "0.9"
107
- type: :development
108
- requirement: *id006
85
+ - !ruby/object:Gem::Version
86
+ version: '2.0'
87
+ type: :runtime
109
88
  prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '2.0'
95
+ - !ruby/object:Gem::Dependency
110
96
  name: rake
111
- - !ruby/object:Gem::Dependency
112
- version_requirements: &id007 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
113
98
  none: false
114
- requirements:
99
+ requirements:
115
100
  - - ~>
116
- - !ruby/object:Gem::Version
117
- hash: 49
118
- segments:
119
- - 1
120
- - 8
121
- - 3
122
- version: 1.8.3
101
+ - !ruby/object:Gem::Version
102
+ version: '0.9'
123
103
  type: :development
124
- requirement: *id007
125
104
  prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: '0.9'
111
+ - !ruby/object:Gem::Dependency
126
112
  name: jeweler
127
- - !ruby/object:Gem::Dependency
128
- version_requirements: &id008 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
129
114
  none: false
130
- requirements:
115
+ requirements:
131
116
  - - ~>
132
- - !ruby/object:Gem::Version
133
- hash: 15
134
- segments:
135
- - 1
136
- - 0
137
- version: "1.0"
117
+ - !ruby/object:Gem::Version
118
+ version: 1.8.3
138
119
  type: :development
139
- requirement: *id008
140
120
  prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 1.8.3
127
+ - !ruby/object:Gem::Dependency
141
128
  name: right_develop
142
- - !ruby/object:Gem::Dependency
143
- version_requirements: &id009 !ruby/object:Gem::Requirement
129
+ requirement: !ruby/object:Gem::Requirement
144
130
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- hash: 27
149
- segments:
150
- - 2
151
- - 4
152
- - 2
153
- version: 2.4.2
131
+ requirements:
132
+ - - ~>
133
+ - !ruby/object:Gem::Version
134
+ version: '1.0'
154
135
  type: :development
155
- requirement: *id009
156
136
  prerelease: false
157
- name: rdoc
158
- - !ruby/object:Gem::Dependency
159
- version_requirements: &id010 !ruby/object:Gem::Requirement
137
+ version_requirements: !ruby/object:Gem::Requirement
160
138
  none: false
161
- requirements:
139
+ requirements:
162
140
  - - ~>
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 2
167
- - 0
168
- version: "2.0"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: rdoc
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: 2.4.2
169
151
  type: :development
170
- requirement: *id010
171
152
  prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: 2.4.2
159
+ - !ruby/object:Gem::Dependency
172
160
  name: rspec
173
- - !ruby/object:Gem::Dependency
174
- version_requirements: &id011 !ruby/object:Gem::Requirement
161
+ requirement: !ruby/object:Gem::Requirement
175
162
  none: false
176
- requirements:
163
+ requirements:
177
164
  - - ~>
178
- - !ruby/object:Gem::Version
179
- hash: 25
180
- segments:
181
- - 0
182
- - 9
183
- version: "0.9"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.0'
184
167
  type: :development
185
- requirement: *id011
186
168
  prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '2.0'
175
+ - !ruby/object:Gem::Dependency
187
176
  name: flexmock
188
- - !ruby/object:Gem::Dependency
189
- version_requirements: &id012 !ruby/object:Gem::Requirement
177
+ requirement: !ruby/object:Gem::Requirement
190
178
  none: false
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- hash: 3
195
- segments:
196
- - 0
197
- version: "0"
179
+ requirements:
180
+ - - ~>
181
+ - !ruby/object:Gem::Version
182
+ version: '0.9'
198
183
  type: :development
199
- requirement: *id012
200
184
  prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ~>
189
+ - !ruby/object:Gem::Version
190
+ version: '0.9'
191
+ - !ruby/object:Gem::Dependency
201
192
  name: simplecov
202
- - !ruby/object:Gem::Dependency
203
- version_requirements: &id013 !ruby/object:Gem::Requirement
193
+ requirement: !ruby/object:Gem::Requirement
204
194
  none: false
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- hash: 31
209
- segments:
210
- - 0
211
- - 10
212
- version: "0.10"
195
+ requirements:
196
+ - - ! '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
213
199
  type: :development
214
- requirement: *id013
215
200
  prerelease: false
201
+ version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
216
208
  name: ruby-debug
217
- - !ruby/object:Gem::Dependency
218
- version_requirements: &id014 !ruby/object:Gem::Requirement
209
+ requirement: !ruby/object:Gem::Requirement
210
+ none: false
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0.10'
215
+ type: :development
216
+ prerelease: false
217
+ version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0.10'
223
+ - !ruby/object:Gem::Dependency
224
+ name: debugger
225
+ requirement: !ruby/object:Gem::Requirement
219
226
  none: false
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- hash: 63
224
- segments:
225
- - 0
226
- - 11
227
- - 6
228
- version: 0.11.6
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
229
231
  type: :development
230
- requirement: *id014
231
232
  prerelease: false
232
- name: ruby-debug19
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
233
239
  description: A tool for maintaining S3-based DEB, GEM and RPM packages.
234
240
  email: support@rightscale.com
235
- executables:
236
- - right_publish
241
+ executables:
237
242
  - autosign.expect
243
+ - right_publish
238
244
  extensions: []
239
-
240
- extra_rdoc_files:
245
+ extra_rdoc_files:
241
246
  - README.rdoc
242
- files:
247
+ files:
243
248
  - .gitignore
244
249
  - .rspec
250
+ - CHANGELOG.md
245
251
  - Gemfile
246
252
  - Gemfile.lock
247
253
  - README.rdoc
@@ -275,37 +281,31 @@ files:
275
281
  - spec/stores/local_spec.rb
276
282
  - spec/stores/s3_spec.rb
277
283
  homepage: https://github.com/rightscale/right_publish
278
- licenses:
284
+ licenses:
279
285
  - Proprietary
280
286
  post_install_message:
281
287
  rdoc_options: []
282
-
283
- require_paths:
288
+ require_paths:
284
289
  - lib
285
- required_ruby_version: !ruby/object:Gem::Requirement
290
+ required_ruby_version: !ruby/object:Gem::Requirement
286
291
  none: false
287
- requirements:
288
- - - ">="
289
- - !ruby/object:Gem::Version
290
- hash: 3
291
- segments:
292
+ requirements:
293
+ - - ! '>='
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
296
+ segments:
292
297
  - 0
293
- version: "0"
294
- required_rubygems_version: !ruby/object:Gem::Requirement
298
+ hash: 2556348436835479702
299
+ required_rubygems_version: !ruby/object:Gem::Requirement
295
300
  none: false
296
- requirements:
297
- - - ">="
298
- - !ruby/object:Gem::Version
299
- hash: 3
300
- segments:
301
- - 0
302
- version: "0"
301
+ requirements:
302
+ - - ! '>='
303
+ - !ruby/object:Gem::Version
304
+ version: '0'
303
305
  requirements: []
304
-
305
306
  rubyforge_project:
306
- rubygems_version: 1.8.15
307
+ rubygems_version: 1.8.23
307
308
  signing_key:
308
309
  specification_version: 3
309
310
  summary: Package publishing and indexing tool
310
311
  test_files: []
311
-