gemstash 1.0.4 → 1.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 (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