test-gem-push 2016.08.08.21.25.04 → 2016.08.09.01.57.58
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app.rb +17 -27
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d03a116aaf14aef6d7bd7c852ad3c922999b1e40
|
4
|
+
data.tar.gz: c326f0ac32582b8141cd5dbb7abde81a0eafe5f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9f70a7a66d8466d12b55885d0d99454736298f412bc2a3e1b56694f91950aa389f1dea1aac7e1f0d6efba0c9669bab2fc3c7dbfb95f20f6bcd70156f38e1a07
|
7
|
+
data.tar.gz: d25ce89c37a60604c68e10f8a335743e4ee58a2f2c3ad436172db54e4b6bbbba83cf2c80ce5f556de0f35eb1d1d2394dfd8e0d56b4e4cd948958813275b98176
|
data/app.rb
CHANGED
@@ -19,14 +19,13 @@ rescue
|
|
19
19
|
raise "Failed to load JSON from #{host}/#{path}:\n#{json}"
|
20
20
|
end
|
21
21
|
|
22
|
-
def push!(name, version
|
22
|
+
def push!(name, version)
|
23
23
|
spec = Gem::Specification.new do |s|
|
24
24
|
s.name = name
|
25
25
|
s.version = version
|
26
26
|
s.authors = ['example@example.com']
|
27
27
|
s.files = [__FILE__]
|
28
28
|
s.summary = 'test'
|
29
|
-
s.platform = platform
|
30
29
|
s.required_ruby_version = '~> 2.0'
|
31
30
|
s.required_rubygems_version = '~> 2.6'
|
32
31
|
s.add_dependency 'foo', '~> 1.0'
|
@@ -49,56 +48,47 @@ def get_info(name)
|
|
49
48
|
Net::HTTP.get('index.rubygems.org', "/info/#{name}")
|
50
49
|
end
|
51
50
|
|
52
|
-
|
53
|
-
|
51
|
+
post '/' do
|
52
|
+
halt 401, 'token does not match' unless TOKEN == params['token']
|
54
53
|
|
55
54
|
version = params.fetch('version') { Time.now.strftime('%Y.%m.%d.%H.%M.%S') }
|
56
55
|
gem_name = ENV.fetch('GEM_NAME')
|
57
|
-
platform = params.fetch('platform') { 'ruby' }
|
58
|
-
platform_string = platform == 'ruby' ? '' : "-#{platform}"
|
59
56
|
|
60
57
|
dependency_endpoint = get_dependency_api(gem_name)
|
61
58
|
versions = get_versions.lines
|
62
59
|
info = get_info(gem_name).lines
|
63
60
|
|
64
|
-
if dependency_endpoint.find { |g| g['version'] == version
|
65
|
-
halt 422, "#{gem_name}-#{version}
|
61
|
+
if dependency_endpoint.find { |g| g['version'] == version }
|
62
|
+
halt 422, "#{gem_name}-#{version} already was pushed"
|
66
63
|
end
|
67
64
|
|
68
65
|
begin
|
69
|
-
push!(gem_name, version
|
66
|
+
push!(gem_name, version)
|
70
67
|
rescue Gem::SystemExitException
|
71
68
|
halt 500, "Failed to push: #{$ERROR_INFO}"
|
72
69
|
end
|
73
70
|
|
74
|
-
errors = []
|
75
|
-
|
76
71
|
new_gem = get_dependency_api(gem_name) - dependency_endpoint
|
77
72
|
case new_gem.size
|
78
|
-
when 0 then
|
73
|
+
when 0 then halt 404, 'gem not added to dependency API'
|
79
74
|
when 1
|
80
|
-
unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version,
|
81
|
-
|
75
|
+
unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version, 'ruby', [['foo', '~> 1.0']]]
|
76
|
+
halt 404, "wrong gem added: #{new_gem}"
|
82
77
|
end
|
83
|
-
else
|
78
|
+
else halt 404, "too many new gems added: #{new_gem}"
|
84
79
|
end
|
85
80
|
|
86
|
-
new_versions = get_versions.lines
|
87
|
-
unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}
|
88
|
-
|
81
|
+
new_versions = versions - get_versions.lines
|
82
|
+
unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}") }
|
83
|
+
halt 404, 'gem not added to versions file'
|
89
84
|
end
|
90
85
|
|
91
86
|
new_info = get_info(gem_name).lines - info
|
92
87
|
case new_info.size
|
93
|
-
when 0 then
|
94
|
-
when 1 then
|
95
|
-
else
|
88
|
+
when 0 then halt 404, 'gem not added to dependency API'
|
89
|
+
when 1 then halt 404, "wrong gem added: #{new_info}" unless new_info =~ /^#{version} /
|
90
|
+
else halt 404, "too many new gems added: #{new_info}"
|
96
91
|
end
|
97
92
|
|
98
|
-
|
99
|
-
halt "successfully pushed #{gem_name}-#{version}-#{platform}"
|
100
|
-
else
|
101
|
-
errors.unshift "failed to push #{gem_name}-#{version}-#{platform}"
|
102
|
-
halt 404, errors.join("\n")
|
103
|
-
end
|
93
|
+
halt "successfully pushed #{gem_name}-#{version}"
|
104
94
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-gem-push
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2016.08.
|
4
|
+
version: 2016.08.09.01.57.58
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- example@example.com
|
@@ -50,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
50
|
version: '2.6'
|
51
51
|
requirements: []
|
52
52
|
rubyforge_project:
|
53
|
-
rubygems_version: 2.
|
53
|
+
rubygems_version: 2.4.5.1
|
54
54
|
signing_key:
|
55
55
|
specification_version: 4
|
56
56
|
summary: test
|