gemstash 2.0.0 → 2.2.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.
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: []