cocoapods-core 0.38.2 → 0.39.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cocoapods-core/gem_version.rb +1 -1
- data/lib/cocoapods-core/podfile/dsl.rb +1 -1
- data/lib/cocoapods-core/podfile/target_definition.rb +7 -1
- data/lib/cocoapods-core/requirement.rb +33 -0
- data/lib/cocoapods-core/source/health_reporter.rb +6 -11
- data/lib/cocoapods-core/specification/dsl.rb +38 -6
- data/lib/cocoapods-core/specification/linter.rb +7 -7
- data/lib/cocoapods-core/specification/linter/result.rb +14 -8
- data/lib/cocoapods-core/version.rb +39 -2
- data/lib/cocoapods-core/yaml_helper.rb +7 -15
- 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: c783da84523246e5bc4076ef3f3713a231028d1a
|
4
|
+
data.tar.gz: bbae7cfc7b1d93c750c1162e6b0d11166db0fa80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c856b520fe158afc3adaa6f91e41fd913af0f58496a3068b690420149c8c5e6fdff7a1e60570a5d52cfe19057cafa06f22a1cf889b3f46cb81f65086f0f9021
|
7
|
+
data.tar.gz: 68a0026ddeb29950db30f3b834cd743361cf6e086fdcb56ba811096221f95a0ceba3a2e1b7f04e214ecc810a51392b818aeb99c5dbf805db842ce70473498c27
|
@@ -695,7 +695,13 @@ module Pod
|
|
695
695
|
podfile.defined_in_file.dirname + name
|
696
696
|
elsif options[:autodetect]
|
697
697
|
glob_pattern = podfile.defined_in_file.dirname + '*.podspec{,.json}'
|
698
|
-
Pathname.glob(glob_pattern).first
|
698
|
+
path = Pathname.glob(glob_pattern).first
|
699
|
+
unless path
|
700
|
+
raise Informative, 'Could not locate a podspec in the current directory. '\
|
701
|
+
'You can specify the path via the path option.'
|
702
|
+
end
|
703
|
+
|
704
|
+
path
|
699
705
|
end
|
700
706
|
end
|
701
707
|
|
@@ -15,6 +15,8 @@ module Pod
|
|
15
15
|
#
|
16
16
|
PATTERN = /\A\s*(#{quoted_operators})?\s*(#{Version::VERSION_PATTERN})\s*\z/
|
17
17
|
|
18
|
+
DefaultRequirement = ['>=', Version.new(0)] # rubocop:disable Style/ConstantName
|
19
|
+
|
18
20
|
#-------------------------------------------------------------------------#
|
19
21
|
|
20
22
|
# Factory method to create a new requirement.
|
@@ -66,6 +68,37 @@ module Pod
|
|
66
68
|
[operator, version]
|
67
69
|
end
|
68
70
|
|
71
|
+
# Constructs a requirement from `requirements`.
|
72
|
+
#
|
73
|
+
# @param [String, Version, Array<String>, Array<Version>] requirements
|
74
|
+
# The set of requirements
|
75
|
+
#
|
76
|
+
# @note Duplicate requirements are ignored.
|
77
|
+
#
|
78
|
+
# @note An empty set of `requirements` is the same as `">= 0"`
|
79
|
+
#
|
80
|
+
def initialize(*requirements)
|
81
|
+
requirements = requirements.flatten
|
82
|
+
requirements.compact!
|
83
|
+
requirements.uniq!
|
84
|
+
|
85
|
+
if requirements.empty?
|
86
|
+
@requirements = [DefaultRequirement]
|
87
|
+
else
|
88
|
+
@requirements = requirements.map! { |r| self.class.parse r }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# @return [Bool] true if this pod has no requirements.
|
94
|
+
#
|
95
|
+
def none?
|
96
|
+
if @requirements.size == 1
|
97
|
+
@requirements[0] == DefaultRequirement
|
98
|
+
else
|
99
|
+
false
|
100
|
+
end
|
101
|
+
end
|
69
102
|
#-------------------------------------------------------------------------#
|
70
103
|
end
|
71
104
|
end
|
@@ -91,8 +91,8 @@ module Pod
|
|
91
91
|
linter = Specification::Linter.new(spec_path)
|
92
92
|
linter.lint
|
93
93
|
linter.results.each do |result|
|
94
|
-
|
95
|
-
report.add_message(type, result.message, name, version)
|
94
|
+
next if result.public_only?
|
95
|
+
report.add_message(result.type, result.message, name, version)
|
96
96
|
end
|
97
97
|
linter.spec
|
98
98
|
end
|
@@ -183,15 +183,10 @@ module Pod
|
|
183
183
|
# @return [void]
|
184
184
|
#
|
185
185
|
def add_message(type, message, spec_name, spec_version = nil)
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
else
|
191
|
-
pods_by_warning[message] ||= {}
|
192
|
-
pods_by_warning[message][spec_name] ||= []
|
193
|
-
pods_by_warning[message][spec_name] << spec_version
|
194
|
-
end
|
186
|
+
pods = send(:"pods_by_#{type}")
|
187
|
+
pods[message] ||= {}
|
188
|
+
pods[message][spec_name] ||= []
|
189
|
+
pods[message][spec_name] << spec_version
|
195
190
|
end
|
196
191
|
end
|
197
192
|
|
@@ -221,10 +221,14 @@ module Pod
|
|
221
221
|
# LICENSE
|
222
222
|
# }
|
223
223
|
#
|
224
|
-
# @param [String
|
225
|
-
# The type of the license
|
226
|
-
#
|
227
|
-
#
|
224
|
+
# @param [String] license
|
225
|
+
# The type of the license
|
226
|
+
#
|
227
|
+
# @overload license=(license)
|
228
|
+
# @param [String, Hash{Symbol=>String}] license
|
229
|
+
# @option license [String] :type license type
|
230
|
+
# @option license [String] :file file containing full license text. Supports txt, md, and markdown
|
231
|
+
# @option license [String] :text full license text
|
228
232
|
#
|
229
233
|
root_attribute :license,
|
230
234
|
:container => Hash,
|
@@ -290,8 +294,36 @@ module Pod
|
|
290
294
|
# spec.source = { :http => 'http://dev.wechatapp.com/download/sdk/WeChat_SDK_iOS_en.zip',
|
291
295
|
# :sha1 => '7e21857fe11a511f472cfd7cfa2d979bd7ab7d96' }
|
292
296
|
#
|
293
|
-
#
|
294
|
-
#
|
297
|
+
#
|
298
|
+
# @overload source=(git)
|
299
|
+
# @param [Hash] git
|
300
|
+
# @option git [String] :git git source URI
|
301
|
+
# @option git [String] :tag version tag
|
302
|
+
# @option git [Bool] :submodules Whether to checkout submodules
|
303
|
+
# @option git [String] :branch branch name
|
304
|
+
# @option git [String] :commit commit hash
|
305
|
+
#
|
306
|
+
# @overload source=(svn)
|
307
|
+
# @param [Hash] svn
|
308
|
+
# @option svn [String] :svn svn source URI
|
309
|
+
# @option svn [String] :tag version tag
|
310
|
+
# @option svn [String] :folder folder
|
311
|
+
# @option svn [String] :revision revision
|
312
|
+
#
|
313
|
+
# @overload source=(hg)
|
314
|
+
# @param [Hash] hg
|
315
|
+
# @option hg [String] :hg mercurial source URI
|
316
|
+
# @option hg [String] :revision revision
|
317
|
+
#
|
318
|
+
# @overload source=(http)
|
319
|
+
# @param [Hash] http
|
320
|
+
# @option http [String] :http compressed source URL
|
321
|
+
# @option http [String] :type file type. Supports zip, tgz, bz2, txz and tar
|
322
|
+
# @option http [String] :sha1 SHA hash. Supports SHA1 and SHA256
|
323
|
+
#
|
324
|
+
# @overload source=(path)
|
325
|
+
# @param [Hash] path
|
326
|
+
# @option path [String] :path local source path
|
295
327
|
#
|
296
328
|
root_attribute :source,
|
297
329
|
:container => Hash,
|
@@ -244,14 +244,14 @@ module Pod
|
|
244
244
|
# Performs validations related to the `description` attribute.
|
245
245
|
#
|
246
246
|
def _validate_description(d)
|
247
|
-
if d =~ /An optional longer description of/
|
248
|
-
results.add_warning('description', 'The description is not meaningful.')
|
249
|
-
end
|
250
247
|
if d == spec.summary
|
251
248
|
results.add_warning('description', 'The description is equal to' \
|
252
249
|
' the summary.')
|
253
250
|
end
|
254
|
-
|
251
|
+
|
252
|
+
if d.strip.empty?
|
253
|
+
results.add_error('description', 'The description is empty.')
|
254
|
+
elsif d.length < spec.summary.length
|
255
255
|
results.add_warning('description', 'The description is shorter ' \
|
256
256
|
'than the summary.')
|
257
257
|
end
|
@@ -347,7 +347,7 @@ module Pod
|
|
347
347
|
' the Git tag.')
|
348
348
|
end
|
349
349
|
if tag.nil?
|
350
|
-
results.add_warning('source', 'Git sources should specify a tag.')
|
350
|
+
results.add_warning('source', 'Git sources should specify a tag.', true)
|
351
351
|
end
|
352
352
|
end
|
353
353
|
|
@@ -389,7 +389,7 @@ module Pod
|
|
389
389
|
end
|
390
390
|
unless git_uri.scheme == 'https'
|
391
391
|
results.add_warning('github_sources', 'Github repositories ' \
|
392
|
-
'should use an `https` link.')
|
392
|
+
'should use an `https` link.', true)
|
393
393
|
end
|
394
394
|
end
|
395
395
|
|
@@ -400,7 +400,7 @@ module Pod
|
|
400
400
|
if git =~ /\w+\@(\w|\.)+\:(\/\w+)*/
|
401
401
|
results.add_warning('source', 'Git SSH URLs will NOT work for ' \
|
402
402
|
'people behind firewalls configured to only allow HTTP, ' \
|
403
|
-
'therefore HTTPS is preferred.')
|
403
|
+
'therefore HTTPS is preferred.', true)
|
404
404
|
end
|
405
405
|
end
|
406
406
|
end
|
@@ -17,13 +17,19 @@ module Pod
|
|
17
17
|
#
|
18
18
|
attr_reader :message
|
19
19
|
|
20
|
+
# @return [Boolean] whether the result only applies to public specs.
|
21
|
+
#
|
22
|
+
attr_reader :public_only
|
23
|
+
alias_method :public_only?, :public_only
|
24
|
+
|
20
25
|
# @param [Symbol] type @see type
|
21
26
|
# @param [String] message @see message
|
22
27
|
#
|
23
|
-
def initialize(type, attribute_name, message)
|
28
|
+
def initialize(type, attribute_name, message, public_only = false)
|
24
29
|
@type = type
|
25
30
|
@attribute_name = attribute_name
|
26
31
|
@message = message
|
32
|
+
@public_only = public_only
|
27
33
|
@platforms = []
|
28
34
|
end
|
29
35
|
|
@@ -72,8 +78,8 @@ module Pod
|
|
72
78
|
#
|
73
79
|
# @return [void]
|
74
80
|
#
|
75
|
-
def add_error(attribute_name, message)
|
76
|
-
add_result(:error, attribute_name, message)
|
81
|
+
def add_error(attribute_name, message, public_only = false)
|
82
|
+
add_result(:error, attribute_name, message, public_only)
|
77
83
|
end
|
78
84
|
|
79
85
|
# Adds a warning result with the given message.
|
@@ -83,8 +89,8 @@ module Pod
|
|
83
89
|
#
|
84
90
|
# @return [void]
|
85
91
|
#
|
86
|
-
def add_warning(attribute_name, message)
|
87
|
-
add_result(:warning, attribute_name, message)
|
92
|
+
def add_warning(attribute_name, message, public_only = false)
|
93
|
+
add_result(:warning, attribute_name, message, public_only)
|
88
94
|
end
|
89
95
|
|
90
96
|
private
|
@@ -106,12 +112,12 @@ module Pod
|
|
106
112
|
#
|
107
113
|
# @return [void]
|
108
114
|
#
|
109
|
-
def add_result(type, attribute_name, message)
|
115
|
+
def add_result(type, attribute_name, message, public_only)
|
110
116
|
result = results.find do |r|
|
111
|
-
r.type == type && r.attribute_name == attribute_name && r.message == message
|
117
|
+
r.type == type && r.attribute_name == attribute_name && r.message == message && r.public_only? == public_only
|
112
118
|
end
|
113
119
|
unless result
|
114
|
-
result = Result.new(type, attribute_name, message)
|
120
|
+
result = Result.new(type, attribute_name, message, public_only)
|
115
121
|
results << result
|
116
122
|
end
|
117
123
|
result.platforms << @consumer.platform_name if @consumer
|
@@ -140,10 +140,47 @@ module Pod
|
|
140
140
|
numeric_segments[2].to_i
|
141
141
|
end
|
142
142
|
|
143
|
-
|
143
|
+
# Compares the versions for sorting.
|
144
|
+
#
|
145
|
+
# @param [Version] other
|
146
|
+
# The other version to compare.
|
147
|
+
#
|
148
|
+
# @return [Fixnum] -1, 0, or +1 depending on whether the receiver is less
|
149
|
+
# than, equal to, or greater than other.
|
150
|
+
#
|
151
|
+
# @note Attempts to compare something that's not a {Version} return nil
|
152
|
+
#
|
153
|
+
def <=>(other)
|
154
|
+
return unless other.is_a?(Pod::Version)
|
155
|
+
return 0 if @version == other.version
|
156
|
+
|
157
|
+
compare = proc do |segments, other_segments|
|
158
|
+
limit = [segments.size, other_segments.size].max
|
159
|
+
|
160
|
+
(0..limit).each do |i|
|
161
|
+
lhs, rhs = segments[i] || 0, other_segments[i] || 0
|
162
|
+
|
163
|
+
next if lhs == rhs
|
164
|
+
return lhs <=> rhs if lhs <=> rhs
|
165
|
+
return -1 if lhs.is_a?(String) && rhs.is_a?(Numeric)
|
166
|
+
return 1 if lhs.is_a?(Numeric) && rhs.is_a?(String)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
compare[numeric_segments, other.numeric_segments]
|
171
|
+
compare[prerelease_segments, other.prerelease_segments]
|
172
|
+
|
173
|
+
version <=> other.version
|
174
|
+
end
|
175
|
+
|
176
|
+
protected
|
144
177
|
|
145
178
|
def numeric_segments
|
146
|
-
segments.take_while { |s| s.is_a?(Numeric) }
|
179
|
+
segments.take_while { |s| s.is_a?(Numeric) }.reverse_each.drop_while { |s| s == 0 }.reverse
|
180
|
+
end
|
181
|
+
|
182
|
+
def prerelease_segments
|
183
|
+
segments.drop_while { |s| s.is_a?(Numeric) }
|
147
184
|
end
|
148
185
|
|
149
186
|
#-------------------------------------------------------------------------#
|
@@ -94,16 +94,10 @@ module Pod
|
|
94
94
|
#
|
95
95
|
def process_according_to_class(value, hash_keys_hint = nil)
|
96
96
|
case value
|
97
|
-
when String then YAML.dump(value).sub(/^---/, '').sub(/[.]{3}\s*$/, '').strip
|
98
|
-
when Symbol then ":#{value}"
|
99
|
-
when TrueClass then 'true'
|
100
|
-
when FalseClass then 'false'
|
101
97
|
when Array then process_array(value)
|
102
98
|
when Hash then process_hash(value, hash_keys_hint)
|
103
|
-
else
|
104
|
-
|
105
|
-
"#{value.class}"
|
106
|
-
end
|
99
|
+
else YAML.dump(value).sub(/\A---/, '').sub(/[.]{3}\s*\Z/, '').strip
|
100
|
+
end.strip
|
107
101
|
end
|
108
102
|
|
109
103
|
# Converts an array to YAML after sorting it.
|
@@ -114,9 +108,8 @@ module Pod
|
|
114
108
|
# @return [String] the YAML representation of the given object.
|
115
109
|
#
|
116
110
|
def process_array(array)
|
117
|
-
result =
|
118
|
-
|
119
|
-
result << process_according_to_class(array_value)
|
111
|
+
result = sorted_array(array).map do |array_value|
|
112
|
+
process_according_to_class(array_value)
|
120
113
|
end
|
121
114
|
"- #{result * "\n- "}"
|
122
115
|
end
|
@@ -138,17 +131,16 @@ module Pod
|
|
138
131
|
#
|
139
132
|
def process_hash(hash, hash_keys_hint = nil, line_separator = "\n")
|
140
133
|
keys = sorted_array_with_hint(hash.keys, hash_keys_hint)
|
141
|
-
key_lines =
|
142
|
-
keys.each do |key|
|
134
|
+
key_lines = keys.map do |key|
|
143
135
|
key_value = hash[key]
|
144
136
|
processed = process_according_to_class(key_value)
|
145
137
|
processed_key = process_according_to_class(key)
|
146
138
|
case key_value
|
147
139
|
when Array, Hash
|
148
140
|
key_partial_yaml = processed.lines.map { |line| " #{line}" } * ''
|
149
|
-
|
141
|
+
"#{processed_key}:\n#{key_partial_yaml}"
|
150
142
|
else
|
151
|
-
|
143
|
+
"#{processed_key}: #{processed}"
|
152
144
|
end
|
153
145
|
end
|
154
146
|
key_lines * line_separator
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.39.0.beta.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|