gemstash 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +33 -0
  3. data/lib/gemstash.rb +2 -0
  4. data/lib/gemstash/api_key_authorization.rb +29 -0
  5. data/lib/gemstash/authorization.rb +5 -1
  6. data/lib/gemstash/cli/authorize.rb +1 -1
  7. data/lib/gemstash/cli/setup.rb +50 -37
  8. data/lib/gemstash/cli/start.rb +1 -1
  9. data/lib/gemstash/config.ru +1 -0
  10. data/lib/gemstash/configuration.rb +35 -3
  11. data/lib/gemstash/db/version.rb +11 -0
  12. data/lib/gemstash/env.rb +16 -10
  13. data/lib/gemstash/gem_fetcher.rb +1 -1
  14. data/lib/gemstash/gem_pusher.rb +15 -17
  15. data/lib/gemstash/gem_source/private_source.rb +29 -44
  16. data/lib/gemstash/gem_source/upstream_source.rb +4 -4
  17. data/lib/gemstash/gem_unyanker.rb +10 -4
  18. data/lib/gemstash/gem_yanker.rb +10 -4
  19. data/lib/gemstash/health.rb +53 -0
  20. data/lib/gemstash/http_client.rb +5 -3
  21. data/lib/gemstash/logging.rb +1 -1
  22. data/lib/gemstash/man/gemstash-authorize.1 +6 -5
  23. data/lib/gemstash/man/gemstash-authorize.1.txt +14 -13
  24. data/lib/gemstash/man/gemstash-configuration.5 +90 -8
  25. data/lib/gemstash/man/gemstash-configuration.5.txt +82 -6
  26. data/lib/gemstash/man/gemstash-customize.7 +68 -12
  27. data/lib/gemstash/man/gemstash-customize.7.txt +64 -26
  28. data/lib/gemstash/man/gemstash-debugging.7 +1 -1
  29. data/lib/gemstash/man/gemstash-deploy.7 +33 -1
  30. data/lib/gemstash/man/gemstash-deploy.7.txt +25 -0
  31. data/lib/gemstash/man/gemstash-mirror.7 +1 -1
  32. data/lib/gemstash/man/gemstash-multiple-sources.7 +1 -1
  33. data/lib/gemstash/man/gemstash-private-gems.7 +52 -3
  34. data/lib/gemstash/man/gemstash-private-gems.7.txt +39 -4
  35. data/lib/gemstash/man/gemstash-readme.7 +34 -4
  36. data/lib/gemstash/man/gemstash-readme.7.txt +34 -12
  37. data/lib/gemstash/man/gemstash-setup.1 +3 -1
  38. data/lib/gemstash/man/gemstash-setup.1.txt +3 -1
  39. data/lib/gemstash/man/gemstash-start.1 +4 -3
  40. data/lib/gemstash/man/gemstash-start.1.txt +5 -4
  41. data/lib/gemstash/man/gemstash-status.1 +4 -3
  42. data/lib/gemstash/man/gemstash-status.1.txt +3 -2
  43. data/lib/gemstash/man/gemstash-stop.1 +4 -3
  44. data/lib/gemstash/man/gemstash-stop.1.txt +3 -2
  45. data/lib/gemstash/man/gemstash-version.1 +1 -1
  46. data/lib/gemstash/puma.rb +2 -2
  47. data/lib/gemstash/specs_builder.rb +14 -16
  48. data/lib/gemstash/version.rb +1 -1
  49. metadata +29 -7
@@ -1,6 +1,6 @@
1
1
  require "gemstash"
2
2
 
3
- threads 0, 16
4
- bind "#{Gemstash::Env.current.config[:bind]}"
3
+ threads 0, Gemstash::Env.current.config[:puma_threads].to_i
4
+ bind Gemstash::Env.current.config[:bind].to_s
5
5
  workers 1
6
6
  rackup Gemstash::Env.current.rackup
@@ -6,22 +6,14 @@ module Gemstash
6
6
  # Builds a Marshal'ed and GZipped array of arrays containing specs as:
7
7
  # [name, Gem::Version, platform]
8
8
  class SpecsBuilder
9
+ include Gemstash::Env::Helper
9
10
  attr_reader :result
10
11
 
11
- # Used for the /private/specs.4.8.gz endpoint. Fetches non-prerelease,
12
- # indexed private gems.
13
- def self.all
14
- new.build
15
- end
16
-
17
- # Used for the /private/prerelease_specs.4.8.gz endpoint. Fetches
18
- # prerelease, indexed private gems.
19
- def self.prerelease
20
- new(prerelease: true).build
21
- end
22
-
23
- def self.latest
24
- new(latest: true).build
12
+ def self.serve(app)
13
+ prerelease = app.params.fetch(:prerelease, false)
14
+ latest = app.params.fetch(:latest, false)
15
+ app.content_type "application/octet-stream"
16
+ new(app.auth, prerelease: prerelease, latest: latest).serve
25
17
  end
26
18
 
27
19
  def self.invalidate_stored
@@ -31,12 +23,14 @@ module Gemstash
31
23
  storage.resource("prerelease_specs.4.8.gz").delete(:specs)
32
24
  end
33
25
 
34
- def initialize(prerelease: false, latest: false)
26
+ def initialize(auth, prerelease: false, latest: false)
27
+ @auth = auth
35
28
  @prerelease = prerelease
36
29
  @latest = latest
37
30
  end
38
31
 
39
- def build
32
+ def serve
33
+ check_auth if gemstash_env.config[:protected_fetch]
40
34
  fetch_from_storage
41
35
  return result if result
42
36
  fetch_versions
@@ -97,5 +91,9 @@ module Gemstash
97
91
  def store_result
98
92
  fetch_resource.save(specs: @result)
99
93
  end
94
+
95
+ def check_auth
96
+ @auth.check("fetch")
97
+ end
100
98
  end
101
99
  end
@@ -1,4 +1,4 @@
1
1
  #:nodoc:
2
2
  module Gemstash
3
- VERSION = "1.0.4".freeze
3
+ VERSION = "1.1.0".freeze
4
4
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemstash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.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: 2017-01-27 00:00:00.000000000 Z
11
+ date: 2017-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.2'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '4.2'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: dalli
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +100,20 @@ dependencies:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
102
  version: '2.14'
103
+ - !ruby/object:Gem::Dependency
104
+ name: server_health_check-rack
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.1'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.1'
97
117
  - !ruby/object:Gem::Dependency
98
118
  name: sequel
99
119
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +218,14 @@ dependencies:
198
218
  requirements:
199
219
  - - "~>"
200
220
  - !ruby/object:Gem::Version
201
- version: '0.1'
221
+ version: '0.2'
202
222
  type: :development
203
223
  prerelease: false
204
224
  version_requirements: !ruby/object:Gem::Requirement
205
225
  requirements:
206
226
  - - "~>"
207
227
  - !ruby/object:Gem::Version
208
- version: '0.1'
228
+ version: '0.2'
209
229
  - !ruby/object:Gem::Dependency
210
230
  name: rack-test
211
231
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +297,7 @@ files:
277
297
  - LICENSE.txt
278
298
  - exe/gemstash
279
299
  - lib/gemstash.rb
300
+ - lib/gemstash/api_key_authorization.rb
280
301
  - lib/gemstash/authorization.rb
281
302
  - lib/gemstash/cache.rb
282
303
  - lib/gemstash/cli.rb
@@ -306,6 +327,7 @@ files:
306
327
  - lib/gemstash/gem_source/upstream_source.rb
307
328
  - lib/gemstash/gem_unyanker.rb
308
329
  - lib/gemstash/gem_yanker.rb
330
+ - lib/gemstash/health.rb
309
331
  - lib/gemstash/http_client.rb
310
332
  - lib/gemstash/logging.rb
311
333
  - lib/gemstash/man/gemstash-authorize.1
@@ -366,7 +388,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
366
388
  version: '0'
367
389
  requirements: []
368
390
  rubyforge_project:
369
- rubygems_version: 2.4.8
391
+ rubygems_version: 2.6.12
370
392
  signing_key:
371
393
  specification_version: 4
372
394
  summary: A place to stash gems you'll need