gemstash 2.0.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -0
  3. data/exe/gemstash +3 -0
  4. data/lib/gemstash/api_key_authorization.rb +3 -0
  5. data/lib/gemstash/authorization.rb +7 -3
  6. data/lib/gemstash/cache.rb +42 -2
  7. data/lib/gemstash/cli/authorize.rb +5 -5
  8. data/lib/gemstash/cli/base.rb +4 -1
  9. data/lib/gemstash/cli/setup.rb +19 -4
  10. data/lib/gemstash/cli/start.rb +4 -1
  11. data/lib/gemstash/cli/status.rb +2 -0
  12. data/lib/gemstash/cli/stop.rb +2 -0
  13. data/lib/gemstash/cli.rb +2 -0
  14. data/lib/gemstash/config.ru +3 -3
  15. data/lib/gemstash/configuration.rb +8 -2
  16. data/lib/gemstash/db/authorization.rb +2 -0
  17. data/lib/gemstash/db/cached_rubygem.rb +3 -0
  18. data/lib/gemstash/db/dependency.rb +2 -0
  19. data/lib/gemstash/db/rubygem.rb +3 -0
  20. data/lib/gemstash/db/upstream.rb +3 -0
  21. data/lib/gemstash/db/version.rb +3 -0
  22. data/lib/gemstash/db.rb +3 -0
  23. data/lib/gemstash/dependencies.rb +6 -2
  24. data/lib/gemstash/env.rb +24 -4
  25. data/lib/gemstash/gem_fetcher.rb +4 -2
  26. data/lib/gemstash/gem_pusher.rb +7 -5
  27. data/lib/gemstash/gem_source/dependency_caching.rb +4 -4
  28. data/lib/gemstash/gem_source/private_source.rb +6 -3
  29. data/lib/gemstash/gem_source/rack_middleware.rb +3 -0
  30. data/lib/gemstash/gem_source/upstream_source.rb +9 -3
  31. data/lib/gemstash/gem_source.rb +4 -2
  32. data/lib/gemstash/gem_yanker.rb +4 -0
  33. data/lib/gemstash/health.rb +2 -0
  34. data/lib/gemstash/http_client.rb +12 -4
  35. data/lib/gemstash/logging.rb +3 -1
  36. data/lib/gemstash/man/gemstash-authorize.1.txt +0 -65
  37. data/lib/gemstash/man/gemstash-configuration.5.txt +0 -65
  38. data/lib/gemstash/man/gemstash-customize.7.txt +0 -65
  39. data/lib/gemstash/man/gemstash-debugging.7.txt +0 -65
  40. data/lib/gemstash/man/gemstash-deploy.7.txt +0 -65
  41. data/lib/gemstash/man/gemstash-mirror.7.txt +0 -65
  42. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +0 -65
  43. data/lib/gemstash/man/gemstash-private-gems.7.txt +0 -65
  44. data/lib/gemstash/man/gemstash-readme.7.txt +0 -65
  45. data/lib/gemstash/man/gemstash-setup.1.txt +0 -65
  46. data/lib/gemstash/man/gemstash-start.1.txt +0 -65
  47. data/lib/gemstash/man/gemstash-status.1.txt +0 -65
  48. data/lib/gemstash/man/gemstash-stop.1.txt +0 -65
  49. data/lib/gemstash/man/gemstash-version.1.txt +0 -65
  50. data/lib/gemstash/migrations/01_gem_dependencies.rb +2 -0
  51. data/lib/gemstash/migrations/02_authorizations.rb +2 -0
  52. data/lib/gemstash/migrations/03_cached_gems.rb +2 -0
  53. data/lib/gemstash/migrations/04_health_tests.rb +2 -0
  54. data/lib/gemstash/puma.rb +2 -0
  55. data/lib/gemstash/rack_env_rewriter.rb +11 -2
  56. data/lib/gemstash/specs_builder.rb +5 -1
  57. data/lib/gemstash/storage.rb +17 -7
  58. data/lib/gemstash/upstream.rb +8 -5
  59. data/lib/gemstash/version.rb +4 -2
  60. data/lib/gemstash/web.rb +8 -4
  61. data/lib/gemstash.rb +3 -1
  62. metadata +40 -133
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "digest"
4
+ require "forwardable"
2
5
  require "uri"
3
6
 
4
7
  module Gemstash
5
- #:nodoc:
8
+ # :nodoc:
6
9
  class Upstream
7
10
  extend Forwardable
8
11
 
@@ -13,7 +16,7 @@ module Gemstash
13
16
  def initialize(upstream, user_agent: nil)
14
17
  @uri = URI(CGI.unescape(upstream.to_s))
15
18
  @user_agent = user_agent
16
- raise "URL '#{@uri}' is not valid!" unless @uri.to_s =~ URI::DEFAULT_PARSER.make_regexp
19
+ raise "URL '#{@uri}' is not valid!" unless @uri.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
17
20
  end
18
21
 
19
22
  def url(path = nil, params = nil)
@@ -21,7 +24,7 @@ module Gemstash
21
24
 
22
25
  unless path.to_s.empty?
23
26
  base = "#{base}/" unless base.end_with?("/")
24
- path = path[1..-1] if path.to_s.start_with?("/")
27
+ path = path[1..] if path.to_s.start_with?("/")
25
28
  end
26
29
 
27
30
  params = "?#{params}" if !params.nil? && !params.empty?
@@ -29,7 +32,7 @@ module Gemstash
29
32
  end
30
33
 
31
34
  def auth?
32
- !user.to_s.empty? && !password.to_s.empty?
35
+ !user.to_s.empty? || !password.to_s.empty?
33
36
  end
34
37
 
35
38
  # Utilized as the parent directory for cached gems
@@ -43,7 +46,7 @@ module Gemstash
43
46
  Digest::MD5.hexdigest(to_s)
44
47
  end
45
48
 
46
- #:nodoc:
49
+ # :nodoc:
47
50
  class GemName
48
51
  def initialize(upstream, gem_name)
49
52
  @upstream = upstream
@@ -1,4 +1,6 @@
1
- #:nodoc:
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
2
4
  module Gemstash
3
- VERSION = "2.0.0".freeze
5
+ VERSION = "2.2.0"
4
6
  end
data/lib/gemstash/web.rb CHANGED
@@ -1,13 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "sinatra/base"
2
4
  require "json"
3
5
  require "gemstash"
4
6
 
5
7
  module Gemstash
6
- #:nodoc:
8
+ # :nodoc:
7
9
  class Web < Sinatra::Base
8
- def initialize(gemstash_env: nil, http_client_builder: nil)
9
- @gemstash_env = gemstash_env || Gemstash::Env.new
10
- @http_client_builder = http_client_builder || Gemstash::HTTPClient
10
+ ruby2_keywords def initialize(options = {})
11
+ raise ArgumentError unless options.is_a?(Hash)
12
+
13
+ @gemstash_env = options[:gemstash_env] || Gemstash::Env.new
14
+ @http_client_builder = options[:http_client_builder] || Gemstash::HTTPClient
11
15
  Gemstash::Env.current = @gemstash_env
12
16
  super()
13
17
  end
data/lib/gemstash.rb CHANGED
@@ -1,4 +1,6 @@
1
- #:nodoc:
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
2
4
  module Gemstash
3
5
  autoload :ApiKeyAuthorization, "gemstash/api_key_authorization"
4
6
  autoload :Authorization, "gemstash/authorization"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemstash
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andre Arko
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2023-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -34,16 +34,22 @@ dependencies:
34
34
  name: dalli
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.2.3
40
+ - - "<"
38
41
  - !ruby/object:Gem::Version
39
- version: '2.7'
42
+ version: '4'
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.2.3
50
+ - - "<"
45
51
  - !ruby/object:Gem::Version
46
- version: '2.7'
52
+ version: '4'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: faraday
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -87,33 +93,33 @@ dependencies:
87
93
  - !ruby/object:Gem::Version
88
94
  version: '1.1'
89
95
  - !ruby/object:Gem::Dependency
90
- name: puma
96
+ name: psych
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
- - - "~>"
99
+ - - ">="
94
100
  - !ruby/object:Gem::Version
95
- version: '3.10'
101
+ version: 3.2.1
96
102
  type: :runtime
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
99
105
  requirements:
100
- - - "~>"
106
+ - - ">="
101
107
  - !ruby/object:Gem::Version
102
- version: '3.10'
108
+ version: 3.2.1
103
109
  - !ruby/object:Gem::Dependency
104
- name: server_health_check-rack
110
+ name: puma
105
111
  requirement: !ruby/object:Gem::Requirement
106
112
  requirements:
107
113
  - - "~>"
108
114
  - !ruby/object:Gem::Version
109
- version: '0.1'
115
+ version: '4.0'
110
116
  type: :runtime
111
117
  prerelease: false
112
118
  version_requirements: !ruby/object:Gem::Requirement
113
119
  requirements:
114
120
  - - "~>"
115
121
  - !ruby/object:Gem::Version
116
- version: '0.1'
122
+ version: '4.0'
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: sequel
119
125
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +134,20 @@ dependencies:
128
134
  - - "~>"
129
135
  - !ruby/object:Gem::Version
130
136
  version: '5.0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: server_health_check-rack
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '0.1'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '0.1'
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: sinatra
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -176,118 +196,6 @@ dependencies:
176
196
  - - "~>"
177
197
  - !ruby/object:Gem::Version
178
198
  version: '1.3'
179
- - !ruby/object:Gem::Dependency
180
- name: bundler
181
- requirement: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: '1.11'
186
- type: :development
187
- prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - "~>"
191
- - !ruby/object:Gem::Version
192
- version: '1.11'
193
- - !ruby/object:Gem::Dependency
194
- name: citrus
195
- requirement: !ruby/object:Gem::Requirement
196
- requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '3.0'
200
- type: :development
201
- prerelease: false
202
- version_requirements: !ruby/object:Gem::Requirement
203
- requirements:
204
- - - "~>"
205
- - !ruby/object:Gem::Version
206
- version: '3.0'
207
- - !ruby/object:Gem::Dependency
208
- name: octokit
209
- requirement: !ruby/object:Gem::Requirement
210
- requirements:
211
- - - "~>"
212
- - !ruby/object:Gem::Version
213
- version: '4.2'
214
- type: :development
215
- prerelease: false
216
- version_requirements: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - "~>"
219
- - !ruby/object:Gem::Version
220
- version: '4.2'
221
- - !ruby/object:Gem::Dependency
222
- name: pandoc_object_filters
223
- requirement: !ruby/object:Gem::Requirement
224
- requirements:
225
- - - "~>"
226
- - !ruby/object:Gem::Version
227
- version: '0.2'
228
- type: :development
229
- prerelease: false
230
- version_requirements: !ruby/object:Gem::Requirement
231
- requirements:
232
- - - "~>"
233
- - !ruby/object:Gem::Version
234
- version: '0.2'
235
- - !ruby/object:Gem::Dependency
236
- name: rack-test
237
- requirement: !ruby/object:Gem::Requirement
238
- requirements:
239
- - - "~>"
240
- - !ruby/object:Gem::Version
241
- version: '0.6'
242
- type: :development
243
- prerelease: false
244
- version_requirements: !ruby/object:Gem::Requirement
245
- requirements:
246
- - - "~>"
247
- - !ruby/object:Gem::Version
248
- version: '0.6'
249
- - !ruby/object:Gem::Dependency
250
- name: rake
251
- requirement: !ruby/object:Gem::Requirement
252
- requirements:
253
- - - "~>"
254
- - !ruby/object:Gem::Version
255
- version: '10.0'
256
- type: :development
257
- prerelease: false
258
- version_requirements: !ruby/object:Gem::Requirement
259
- requirements:
260
- - - "~>"
261
- - !ruby/object:Gem::Version
262
- version: '10.0'
263
- - !ruby/object:Gem::Dependency
264
- name: rspec
265
- requirement: !ruby/object:Gem::Requirement
266
- requirements:
267
- - - "~>"
268
- - !ruby/object:Gem::Version
269
- version: '3.3'
270
- type: :development
271
- prerelease: false
272
- version_requirements: !ruby/object:Gem::Requirement
273
- requirements:
274
- - - "~>"
275
- - !ruby/object:Gem::Version
276
- version: '3.3'
277
- - !ruby/object:Gem::Dependency
278
- name: rubocop
279
- requirement: !ruby/object:Gem::Requirement
280
- requirements:
281
- - - '='
282
- - !ruby/object:Gem::Version
283
- version: '0.49'
284
- type: :development
285
- prerelease: false
286
- version_requirements: !ruby/object:Gem::Requirement
287
- requirements:
288
- - - '='
289
- - !ruby/object:Gem::Version
290
- version: '0.49'
291
199
  description: Gemstash acts as a local RubyGems server, caching copies of gems from
292
200
  RubyGems.org automatically, and eventually letting you push your own private gems
293
201
  as well.
@@ -360,11 +268,11 @@ files:
360
268
  - lib/gemstash/upstream.rb
361
269
  - lib/gemstash/version.rb
362
270
  - lib/gemstash/web.rb
363
- homepage: https://github.com/bundler/gemstash
271
+ homepage: https://github.com/rubygems/gemstash
364
272
  licenses:
365
273
  - MIT
366
274
  metadata: {}
367
- post_install_message:
275
+ post_install_message:
368
276
  rdoc_options: []
369
277
  require_paths:
370
278
  - lib
@@ -372,16 +280,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
372
280
  requirements:
373
281
  - - ">="
374
282
  - !ruby/object:Gem::Version
375
- version: '0'
283
+ version: '2.7'
376
284
  required_rubygems_version: !ruby/object:Gem::Requirement
377
285
  requirements:
378
286
  - - ">="
379
287
  - !ruby/object:Gem::Version
380
288
  version: '0'
381
289
  requirements: []
382
- rubyforge_project:
383
- rubygems_version: 2.7.6
384
- signing_key:
290
+ rubygems_version: 3.4.5
291
+ signing_key:
385
292
  specification_version: 4
386
293
  summary: A place to stash gems you'll need
387
294
  test_files: []