test-gem-push 2016.08.08.21.15.21 → 2016.08.08.21.22.23
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.
- 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
|