test-gem-push 2016.08.08.21.15.21 → 2016.08.08.21.22.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app.rb +13 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d28bcbb625530c2b0505bd2ba3f95907a3685e8d
|
4
|
+
data.tar.gz: 104d92e260b50029ec04a8610138d47abefe17f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4b06706199920321300fa633f1103d4de91aba84dd206ae983ba932e9043d3f8424bf5d52fa3f65d50506a715a1521d073620788579436fcbceb4553b096121
|
7
|
+
data.tar.gz: 52803f32cd520c3f5d1735107c378140d70f1b87adecef1471aa8bb44ab4f65dfb47af4459cc1063f7f1bfecbfaea8e124544de6dd80bd8ba6fde1ec49d8d0e0
|
data/app.rb
CHANGED
@@ -19,13 +19,14 @@ 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, platform)
|
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
|
29
30
|
s.required_ruby_version = '~> 2.0'
|
30
31
|
s.required_rubygems_version = '~> 2.6'
|
31
32
|
s.add_dependency 'foo', '~> 1.0'
|
@@ -53,17 +54,19 @@ get '/' do
|
|
53
54
|
|
54
55
|
version = params.fetch('version') { Time.now.strftime('%Y.%m.%d.%H.%M.%S') }
|
55
56
|
gem_name = ENV.fetch('GEM_NAME')
|
57
|
+
platform = params.fetch('platform') { 'ruby' }
|
58
|
+
platform_string = platform == 'ruby' ? '' : "-#{platform}"
|
56
59
|
|
57
60
|
dependency_endpoint = get_dependency_api(gem_name)
|
58
61
|
versions = get_versions.lines
|
59
62
|
info = get_info(gem_name).lines
|
60
63
|
|
61
|
-
if dependency_endpoint.find { |g| g['version'] == version }
|
62
|
-
halt 422, "#{gem_name}-#{version} already was pushed"
|
64
|
+
if dependency_endpoint.find { |g| g['version'] == version && g['platform'] == platform }
|
65
|
+
halt 422, "#{gem_name}-#{version}-#{platform} already was pushed"
|
63
66
|
end
|
64
67
|
|
65
68
|
begin
|
66
|
-
push!(gem_name, version)
|
69
|
+
push!(gem_name, version, platform)
|
67
70
|
rescue Gem::SystemExitException
|
68
71
|
halt 500, "Failed to push: #{$ERROR_INFO}"
|
69
72
|
end
|
@@ -74,28 +77,28 @@ get '/' do
|
|
74
77
|
case new_gem.size
|
75
78
|
when 0 then errors << 'gem not added to dependency API'
|
76
79
|
when 1
|
77
|
-
unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version,
|
80
|
+
unless new_gem.first.values_at('name', 'number', 'platform', 'dependencies') == [gem_name, version, platform, [['foo', '~> 1.0']]]
|
78
81
|
errors << "wrong gem added: #{new_gem}"
|
79
82
|
end
|
80
83
|
else errors << "too many new gems added: #{new_gem}"
|
81
84
|
end
|
82
85
|
|
83
|
-
new_versions = get_versions.lines - versions
|
84
|
-
unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}") }
|
86
|
+
new_versions = get_versions.lines.tap{|n| warn "new: #{n}"} - versions.tap{|o| warn "old: #{o}"}
|
87
|
+
unless new_versions.find { |l| l.start_with?("#{gem_name} #{version}#{platform_string}") }
|
85
88
|
errors << "gem not added to versions file, new versions: #{new_versions}"
|
86
89
|
end
|
87
90
|
|
88
91
|
new_info = get_info(gem_name).lines - info
|
89
92
|
case new_info.size
|
90
93
|
when 0 then errors << 'gem not added to info'
|
91
|
-
when 1 then errors << "wrong gem added: #{new_info}" unless new_info.first =~ /^#{version} /
|
94
|
+
when 1 then errors << "wrong gem added: #{new_info}" unless new_info.first =~ /^#{version}#{platform_string} /
|
92
95
|
else errors << "too many new gems added: #{new_info}"
|
93
96
|
end
|
94
97
|
|
95
98
|
if errors.empty?
|
96
|
-
halt "successfully pushed #{gem_name}-#{version}"
|
99
|
+
halt "successfully pushed #{gem_name}-#{version}-#{platform}"
|
97
100
|
else
|
98
|
-
errors.unshift "failed to push #{gem_name}-#{version}"
|
101
|
+
errors.unshift "failed to push #{gem_name}-#{version}-#{platform}"
|
99
102
|
halt 404, errors.join("\n")
|
100
103
|
end
|
101
104
|
end
|