gemstash 2.0.0 → 2.1.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/exe/gemstash +3 -0
  3. data/lib/gemstash.rb +2 -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 +5 -2
  7. data/lib/gemstash/cli.rb +2 -0
  8. data/lib/gemstash/cli/authorize.rb +3 -3
  9. data/lib/gemstash/cli/base.rb +4 -1
  10. data/lib/gemstash/cli/setup.rb +8 -1
  11. data/lib/gemstash/cli/start.rb +4 -1
  12. data/lib/gemstash/cli/status.rb +2 -0
  13. data/lib/gemstash/cli/stop.rb +2 -0
  14. data/lib/gemstash/config.ru +3 -3
  15. data/lib/gemstash/configuration.rb +7 -1
  16. data/lib/gemstash/db.rb +3 -0
  17. data/lib/gemstash/db/authorization.rb +2 -0
  18. data/lib/gemstash/db/cached_rubygem.rb +3 -0
  19. data/lib/gemstash/db/dependency.rb +2 -0
  20. data/lib/gemstash/db/rubygem.rb +3 -0
  21. data/lib/gemstash/db/upstream.rb +3 -0
  22. data/lib/gemstash/db/version.rb +3 -0
  23. data/lib/gemstash/dependencies.rb +4 -0
  24. data/lib/gemstash/env.rb +22 -4
  25. data/lib/gemstash/gem_fetcher.rb +2 -0
  26. data/lib/gemstash/gem_pusher.rb +5 -3
  27. data/lib/gemstash/gem_source.rb +2 -0
  28. data/lib/gemstash/gem_source/dependency_caching.rb +4 -4
  29. data/lib/gemstash/gem_source/private_source.rb +3 -0
  30. data/lib/gemstash/gem_source/rack_middleware.rb +3 -0
  31. data/lib/gemstash/gem_source/upstream_source.rb +9 -3
  32. data/lib/gemstash/gem_yanker.rb +4 -0
  33. data/lib/gemstash/health.rb +2 -0
  34. data/lib/gemstash/http_client.rb +4 -1
  35. data/lib/gemstash/logging.rb +2 -0
  36. data/lib/gemstash/man/gemstash-authorize.1 +51 -0
  37. data/lib/gemstash/man/gemstash-authorize.1.txt +33 -53
  38. data/lib/gemstash/man/gemstash-configuration.5 +229 -0
  39. data/lib/gemstash/man/gemstash-configuration.5.txt +150 -6
  40. data/lib/gemstash/man/gemstash-customize.7 +301 -0
  41. data/lib/gemstash/man/gemstash-customize.7.txt +183 -62
  42. data/lib/gemstash/man/gemstash-debugging.7 +34 -0
  43. data/lib/gemstash/man/gemstash-debugging.7.txt +17 -54
  44. data/lib/gemstash/man/gemstash-deploy.7 +72 -0
  45. data/lib/gemstash/man/gemstash-deploy.7.txt +44 -51
  46. data/lib/gemstash/man/gemstash-mirror.7 +40 -0
  47. data/lib/gemstash/man/gemstash-mirror.7.txt +20 -53
  48. data/lib/gemstash/man/gemstash-multiple-sources.7 +89 -0
  49. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +53 -48
  50. data/lib/gemstash/man/gemstash-private-gems.7 +227 -0
  51. data/lib/gemstash/man/gemstash-private-gems.7.txt +108 -18
  52. data/lib/gemstash/man/gemstash-readme.7 +233 -0
  53. data/lib/gemstash/man/gemstash-readme.7.txt +126 -10
  54. data/lib/gemstash/man/gemstash-setup.1 +43 -0
  55. data/lib/gemstash/man/gemstash-setup.1.txt +28 -54
  56. data/lib/gemstash/man/gemstash-start.1 +26 -0
  57. data/lib/gemstash/man/gemstash-start.1.txt +16 -56
  58. data/lib/gemstash/man/gemstash-status.1 +20 -0
  59. data/lib/gemstash/man/gemstash-status.1.txt +13 -57
  60. data/lib/gemstash/man/gemstash-stop.1 +20 -0
  61. data/lib/gemstash/man/gemstash-stop.1.txt +13 -57
  62. data/lib/gemstash/man/gemstash-version.1 +22 -0
  63. data/lib/gemstash/man/gemstash-version.1.txt +12 -57
  64. data/lib/gemstash/migrations/01_gem_dependencies.rb +2 -0
  65. data/lib/gemstash/migrations/02_authorizations.rb +2 -0
  66. data/lib/gemstash/migrations/03_cached_gems.rb +2 -0
  67. data/lib/gemstash/migrations/04_health_tests.rb +2 -0
  68. data/lib/gemstash/puma.rb +2 -0
  69. data/lib/gemstash/rack_env_rewriter.rb +11 -2
  70. data/lib/gemstash/specs_builder.rb +5 -1
  71. data/lib/gemstash/storage.rb +12 -3
  72. data/lib/gemstash/upstream.rb +2 -0
  73. data/lib/gemstash/version.rb +3 -1
  74. data/lib/gemstash/web.rb +2 -0
  75. metadata +69 -22
@@ -0,0 +1,22 @@
1
+ .\" Automatically generated by Pandoc 2.5
2
+ .\"
3
+ .TH "gemstash\-version" "1" "December 14, 2015" "" ""
4
+ .hy
5
+ .SH NAME
6
+ .PP
7
+ gemstash\-version \- Show what version of Gemstash you are using
8
+ .SH SYNOPSIS
9
+ .PP
10
+ \f[C]gemstash version\f[R]
11
+ .SH DESCRIPTION
12
+ .PP
13
+ Show what version of Gemstash you are using.
14
+ .SS USAGE
15
+ .IP
16
+ .nf
17
+ \f[C]
18
+ gemstash version
19
+ gemstash \-\-version
20
+ gemstash \-v
21
+ \f[R]
22
+ .fi
@@ -1,66 +1,21 @@
1
+ gemstash-version(1) gemstash-version(1)
1
2
 
2
3
 
3
4
 
5
+ 1mNAME0m
6
+ gemstash-version - Show what version of Gemstash you are using
4
7
 
8
+ 1mSYNOPSIS0m
9
+ gemstash version
5
10
 
11
+ 1mDESCRIPTION0m
12
+ Show what version of Gemstash you are using.
6
13
 
14
+ 1mUSAGE0m
15
+ gemstash version
16
+ gemstash --version
17
+ gemstash -v
7
18
 
8
19
 
9
20
 
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
21
+ December 14, 2015 gemstash-version(1)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Sequel.migration do
2
4
  change do
3
5
  create_table :rubygems do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Sequel.migration do
2
4
  change do
3
5
  create_table :authorizations do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Sequel.migration do
2
4
  change do
3
5
  create_table :upstreams do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Sequel.migration do
2
4
  change do
3
5
  create_table :health_tests do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "gemstash"
2
4
 
3
5
  threads 0, Gemstash::Env.current.config[:puma_threads].to_i
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "gemstash"
2
4
  require "forwardable"
3
5
 
@@ -33,8 +35,15 @@ module Gemstash
33
35
  def rewrite
34
36
  check_match
35
37
  log_start = "Rewriting '#{@rack_env["REQUEST_URI"]}'"
36
- @rack_env["REQUEST_URI"][@request_uri_match.begin(0)...@request_uri_match.end(0)] = ""
37
- @rack_env["PATH_INFO"][@path_info_match.begin(0)...@path_info_match.end(0)] = ""
38
+
39
+ new_request_uri = @rack_env["REQUEST_URI"].dup
40
+ new_request_uri[@request_uri_match.begin(0)...@request_uri_match.end(0)] = ""
41
+
42
+ new_path_info = @rack_env["PATH_INFO"].dup
43
+ new_path_info[@path_info_match.begin(0)...@path_info_match.end(0)] = ""
44
+
45
+ @rack_env["REQUEST_URI"] = new_request_uri
46
+ @rack_env["PATH_INFO"] = new_path_info
38
47
  log.info "#{log_start} to '#{@rack_env["REQUEST_URI"]}'"
39
48
  end
40
49
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "gemstash"
2
4
  require "stringio"
3
5
  require "zlib"
@@ -33,6 +35,7 @@ module Gemstash
33
35
  check_auth if gemstash_env.config[:protected_fetch]
34
36
  fetch_from_storage
35
37
  return result if result
38
+
36
39
  fetch_versions
37
40
  marshal
38
41
  gzip
@@ -59,8 +62,9 @@ module Gemstash
59
62
  def fetch_from_storage
60
63
  specs = fetch_resource
61
64
  return unless specs.exist?(:specs)
65
+
62
66
  @result = specs.load(:specs).content(:specs)
63
- rescue
67
+ rescue StandardError
64
68
  # On the off-chance of a race condition between specs.exist? and specs.load
65
69
  @result = nil
66
70
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "gemstash"
2
4
  require "digest"
3
5
  require "fileutils"
@@ -74,12 +76,14 @@ module Gemstash
74
76
  def check_storage_version
75
77
  version = Gemstash::Storage.metadata[:storage_version]
76
78
  return if version <= Gemstash::Storage::VERSION
79
+
77
80
  raise Gemstash::Storage::VersionTooNew.new(@folder, version)
78
81
  end
79
82
 
80
83
  def path_valid?(path)
81
84
  return false if path.nil?
82
85
  return false unless File.writable?(path)
86
+
83
87
  true
84
88
  end
85
89
  end
@@ -247,17 +251,17 @@ module Gemstash
247
251
 
248
252
  begin
249
253
  File.delete(content_filename(key))
250
- rescue => e
254
+ rescue StandardError => e
251
255
  log_error "Failed to delete stored content at #{content_filename(key)}", e, level: :warn
252
256
  end
253
257
 
254
258
  begin
255
259
  File.delete(properties_filename) unless content?
256
- rescue => e
260
+ rescue StandardError => e
257
261
  log_error "Failed to delete stored properties at #{properties_filename}", e, level: :warn
258
262
  end
259
263
 
260
- return self
264
+ self
261
265
  ensure
262
266
  reset
263
267
  end
@@ -266,6 +270,7 @@ module Gemstash
266
270
 
267
271
  def load(key)
268
272
  raise "Resource #{@name} has no #{key.inspect} content to load" unless exist?(key)
273
+
269
274
  load_properties # Ensures storage version is checked
270
275
  @content ||= {}
271
276
  @content[key] = read_file(content_filename(key))
@@ -274,6 +279,7 @@ module Gemstash
274
279
  def load_properties(force = false)
275
280
  return if @properties && !force
276
281
  return unless File.exist?(properties_filename)
282
+
277
283
  @properties = YAML.load_file(properties_filename) || {}
278
284
  check_resource_version
279
285
  end
@@ -281,6 +287,7 @@ module Gemstash
281
287
  def check_resource_version
282
288
  version = @properties[:gemstash_resource_version]
283
289
  return if version <= Gemstash::Resource::VERSION
290
+
284
291
  reset
285
292
  raise Gemstash::Resource::VersionTooNew.new(name, folder, version)
286
293
  end
@@ -292,6 +299,7 @@ module Gemstash
292
299
 
293
300
  def content?
294
301
  return false unless Dir.exist?(@folder)
302
+
295
303
  entries = Dir.entries(@folder).reject {|file| file =~ /\A\.\.?\z/ || file == "properties.yaml" }
296
304
  !entries.empty?
297
305
  end
@@ -330,6 +338,7 @@ module Gemstash
330
338
  def content_filename(key)
331
339
  name = sanitize(key.to_s)
332
340
  raise "Invalid content key #{key.inspect}" if name.empty?
341
+
333
342
  File.join(@folder, name)
334
343
  end
335
344
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "digest"
2
4
  require "uri"
3
5
 
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #:nodoc:
2
4
  module Gemstash
3
- VERSION = "2.0.0".freeze
5
+ VERSION = "2.1.0"
4
6
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "sinatra/base"
2
4
  require "json"
3
5
  require "gemstash"
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.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andre Arko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -92,42 +92,42 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '3.10'
95
+ version: '4.0'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.10'
102
+ version: '4.0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: server_health_check-rack
104
+ name: sequel
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0.1'
109
+ version: '5.0'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0.1'
116
+ version: '5.0'
117
117
  - !ruby/object:Gem::Dependency
118
- name: sequel
118
+ name: server_health_check-rack
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '5.0'
123
+ version: '0.1'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '5.0'
130
+ version: '0.1'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: sinatra
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -176,20 +176,40 @@ dependencies:
176
176
  - - "~>"
177
177
  - !ruby/object:Gem::Version
178
178
  version: '1.3'
179
+ - !ruby/object:Gem::Dependency
180
+ name: aruba
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0.14'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0.14'
179
193
  - !ruby/object:Gem::Dependency
180
194
  name: bundler
181
195
  requirement: !ruby/object:Gem::Requirement
182
196
  requirements:
183
- - - "~>"
197
+ - - ">="
184
198
  - !ruby/object:Gem::Version
185
199
  version: '1.11'
200
+ - - "<"
201
+ - !ruby/object:Gem::Version
202
+ version: '3.0'
186
203
  type: :development
187
204
  prerelease: false
188
205
  version_requirements: !ruby/object:Gem::Requirement
189
206
  requirements:
190
- - - "~>"
207
+ - - ">="
191
208
  - !ruby/object:Gem::Version
192
209
  version: '1.11'
210
+ - - "<"
211
+ - !ruby/object:Gem::Version
212
+ version: '3.0'
193
213
  - !ruby/object:Gem::Dependency
194
214
  name: citrus
195
215
  requirement: !ruby/object:Gem::Requirement
@@ -238,28 +258,28 @@ dependencies:
238
258
  requirements:
239
259
  - - "~>"
240
260
  - !ruby/object:Gem::Version
241
- version: '0.6'
261
+ version: '1.1'
242
262
  type: :development
243
263
  prerelease: false
244
264
  version_requirements: !ruby/object:Gem::Requirement
245
265
  requirements:
246
266
  - - "~>"
247
267
  - !ruby/object:Gem::Version
248
- version: '0.6'
268
+ version: '1.1'
249
269
  - !ruby/object:Gem::Dependency
250
270
  name: rake
251
271
  requirement: !ruby/object:Gem::Requirement
252
272
  requirements:
253
273
  - - "~>"
254
274
  - !ruby/object:Gem::Version
255
- version: '10.0'
275
+ version: '12.3'
256
276
  type: :development
257
277
  prerelease: false
258
278
  version_requirements: !ruby/object:Gem::Requirement
259
279
  requirements:
260
280
  - - "~>"
261
281
  - !ruby/object:Gem::Version
262
- version: '10.0'
282
+ version: '12.3'
263
283
  - !ruby/object:Gem::Dependency
264
284
  name: rspec
265
285
  requirement: !ruby/object:Gem::Requirement
@@ -280,14 +300,28 @@ dependencies:
280
300
  requirements:
281
301
  - - '='
282
302
  - !ruby/object:Gem::Version
283
- version: '0.49'
303
+ version: 0.67.2
284
304
  type: :development
285
305
  prerelease: false
286
306
  version_requirements: !ruby/object:Gem::Requirement
287
307
  requirements:
288
308
  - - '='
289
309
  - !ruby/object:Gem::Version
290
- version: '0.49'
310
+ version: 0.67.2
311
+ - !ruby/object:Gem::Dependency
312
+ name: rubocop-performance
313
+ requirement: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - "~>"
316
+ - !ruby/object:Gem::Version
317
+ version: 1.1.0
318
+ type: :development
319
+ prerelease: false
320
+ version_requirements: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - "~>"
323
+ - !ruby/object:Gem::Version
324
+ version: 1.1.0
291
325
  description: Gemstash acts as a local RubyGems server, caching copies of gems from
292
326
  RubyGems.org automatically, and eventually letting you push your own private gems
293
327
  as well.
@@ -335,19 +369,33 @@ files:
335
369
  - lib/gemstash/health.rb
336
370
  - lib/gemstash/http_client.rb
337
371
  - lib/gemstash/logging.rb
372
+ - lib/gemstash/man/gemstash-authorize.1
338
373
  - lib/gemstash/man/gemstash-authorize.1.txt
374
+ - lib/gemstash/man/gemstash-configuration.5
339
375
  - lib/gemstash/man/gemstash-configuration.5.txt
376
+ - lib/gemstash/man/gemstash-customize.7
340
377
  - lib/gemstash/man/gemstash-customize.7.txt
378
+ - lib/gemstash/man/gemstash-debugging.7
341
379
  - lib/gemstash/man/gemstash-debugging.7.txt
380
+ - lib/gemstash/man/gemstash-deploy.7
342
381
  - lib/gemstash/man/gemstash-deploy.7.txt
382
+ - lib/gemstash/man/gemstash-mirror.7
343
383
  - lib/gemstash/man/gemstash-mirror.7.txt
384
+ - lib/gemstash/man/gemstash-multiple-sources.7
344
385
  - lib/gemstash/man/gemstash-multiple-sources.7.txt
386
+ - lib/gemstash/man/gemstash-private-gems.7
345
387
  - lib/gemstash/man/gemstash-private-gems.7.txt
388
+ - lib/gemstash/man/gemstash-readme.7
346
389
  - lib/gemstash/man/gemstash-readme.7.txt
390
+ - lib/gemstash/man/gemstash-setup.1
347
391
  - lib/gemstash/man/gemstash-setup.1.txt
392
+ - lib/gemstash/man/gemstash-start.1
348
393
  - lib/gemstash/man/gemstash-start.1.txt
394
+ - lib/gemstash/man/gemstash-status.1
349
395
  - lib/gemstash/man/gemstash-status.1.txt
396
+ - lib/gemstash/man/gemstash-stop.1
350
397
  - lib/gemstash/man/gemstash-stop.1.txt
398
+ - lib/gemstash/man/gemstash-version.1
351
399
  - lib/gemstash/man/gemstash-version.1.txt
352
400
  - lib/gemstash/migrations/01_gem_dependencies.rb
353
401
  - lib/gemstash/migrations/02_authorizations.rb
@@ -360,7 +408,7 @@ files:
360
408
  - lib/gemstash/upstream.rb
361
409
  - lib/gemstash/version.rb
362
410
  - lib/gemstash/web.rb
363
- homepage: https://github.com/bundler/gemstash
411
+ homepage: https://github.com/rubygems/gemstash
364
412
  licenses:
365
413
  - MIT
366
414
  metadata: {}
@@ -372,15 +420,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
372
420
  requirements:
373
421
  - - ">="
374
422
  - !ruby/object:Gem::Version
375
- version: '0'
423
+ version: '2.4'
376
424
  required_rubygems_version: !ruby/object:Gem::Requirement
377
425
  requirements:
378
426
  - - ">="
379
427
  - !ruby/object:Gem::Version
380
428
  version: '0'
381
429
  requirements: []
382
- rubyforge_project:
383
- rubygems_version: 2.7.6
430
+ rubygems_version: 3.0.1
384
431
  signing_key:
385
432
  specification_version: 4
386
433
  summary: A place to stash gems you'll need