gemstash 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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