cocoapods-core 1.2.1 → 1.3.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/github.rb +1 -1
- data/lib/cocoapods-core/master_source.rb +3 -31
- data/lib/cocoapods-core/platform.rb +9 -1
- data/lib/cocoapods-core/podfile/target_definition.rb +1 -0
- data/lib/cocoapods-core/source.rb +7 -0
- data/lib/cocoapods-core/specification.rb +32 -10
- data/lib/cocoapods-core/specification/consumer.rb +8 -0
- data/lib/cocoapods-core/specification/dsl.rb +54 -3
- data/lib/cocoapods-core/specification/json.rb +1 -0
- data/lib/cocoapods-core/specification/linter.rb +11 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd5bbd87ab68623c39c934248891b30a148f27ad
|
4
|
+
data.tar.gz: 4cd668a92915fc51452e08a69e5fe5d4f32a3341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94c167d862dc5230ad19caf7ac4a2c7c5b50eec997c6d0ce77190abff8866aca95d9a4dc5c045a74c94f35ff25df771a2f23d09b08cf7074d524674c9276d883
|
7
|
+
data.tar.gz: 299de42c3b2ed71dd7ce9e8b442fe788b6281c1ea8ac90ed9428d49509bc15163a67095ddd37108f288c9668c7402867a395774c0ae63fce3637108b9bbc2c9b
|
@@ -131,7 +131,7 @@ module Pod
|
|
131
131
|
# @return [Nil] if the given url is not a valid github repo url.
|
132
132
|
#
|
133
133
|
def self.repo_id_from_url(url)
|
134
|
-
url[%r{github.com
|
134
|
+
url[%r{github.com[/:]([^/]*/(?:(?!\.git)[^/])*)\.*}, 1]
|
135
135
|
end
|
136
136
|
|
137
137
|
# Performs a get request with the given URL.
|
@@ -1,35 +1,7 @@
|
|
1
1
|
module Pod
|
2
2
|
class MasterSource < Source
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
# Updates the local clone of the source repo.
|
7
|
-
#
|
8
|
-
# @param [Bool] show_output
|
9
|
-
#
|
10
|
-
# @return [Array<String>] changed_spec_paths
|
11
|
-
# Returns the list of changed spec paths.
|
12
|
-
#
|
13
|
-
def update(show_output)
|
14
|
-
if requires_update?
|
15
|
-
super
|
16
|
-
else
|
17
|
-
[]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
# Returns whether a source requires updating.
|
24
|
-
#
|
25
|
-
# @param [Source] source
|
26
|
-
# The source to check.
|
27
|
-
#
|
28
|
-
# @return [Bool] Whether the given source should be updated.
|
29
|
-
#
|
30
|
-
def requires_update?
|
31
|
-
commit_hash = git_commit_hash
|
32
|
-
GitHub.modified_since_commit('CocoaPods/Specs', commit_hash)
|
33
|
-
end
|
3
|
+
# For now, the MasterSource behaves exactly the same as any other Source.
|
4
|
+
# In the future we may apply separate logic to the MasterSource that doesn't
|
5
|
+
# depend on the file system.
|
34
6
|
end
|
35
7
|
end
|
@@ -67,6 +67,14 @@ module Pod
|
|
67
67
|
new :osx
|
68
68
|
end
|
69
69
|
|
70
|
+
# Convenience method to initialize a macOS platform.
|
71
|
+
#
|
72
|
+
# @return [Platform] a macOS platform.
|
73
|
+
#
|
74
|
+
def self.macos
|
75
|
+
osx
|
76
|
+
end
|
77
|
+
|
70
78
|
# Convenience method to initialize a tvOS platform.
|
71
79
|
#
|
72
80
|
# @return [Platform] a tvOS platform.
|
@@ -224,7 +232,7 @@ module Pod
|
|
224
232
|
def self.string_name(symbolic_name)
|
225
233
|
case symbolic_name
|
226
234
|
when :ios then 'iOS'
|
227
|
-
when :osx then '
|
235
|
+
when :osx then 'macOS'
|
228
236
|
when :watchos then 'watchOS'
|
229
237
|
when :tvos then 'tvOS'
|
230
238
|
else symbolic_name.to_s
|
@@ -483,6 +483,7 @@ module Pod
|
|
483
483
|
# @return [void]
|
484
484
|
#
|
485
485
|
def set_platform(name, target = nil)
|
486
|
+
name = :osx if name == :macos
|
486
487
|
unless [:ios, :osx, :tvos, :watchos].include?(name)
|
487
488
|
raise StandardError, "Unsupported platform `#{name}`. Platform " \
|
488
489
|
'must be `:ios`, `:osx`, `:tvos`, or `:watchos`.'
|
@@ -330,6 +330,7 @@ module Pod
|
|
330
330
|
# Returns the list of changed spec paths.
|
331
331
|
#
|
332
332
|
def update(show_output)
|
333
|
+
return [] if unchanged_github_repo?
|
333
334
|
prev_commit_hash = git_commit_hash
|
334
335
|
update_git_repo(show_output)
|
335
336
|
refresh_metadata
|
@@ -437,6 +438,12 @@ module Pod
|
|
437
438
|
(`#{command}` || '').strip
|
438
439
|
end
|
439
440
|
|
441
|
+
def unchanged_github_repo?
|
442
|
+
url = repo_git(%w(config --get remote.origin.url))
|
443
|
+
return unless url =~ /github.com/
|
444
|
+
!GitHub.modified_since_commit(url, git_commit_hash)
|
445
|
+
end
|
446
|
+
|
440
447
|
#-------------------------------------------------------------------------#
|
441
448
|
end
|
442
449
|
end
|
@@ -34,13 +34,18 @@ module Pod
|
|
34
34
|
# @param [String] name
|
35
35
|
# the name of the specification.
|
36
36
|
#
|
37
|
-
|
37
|
+
# @param [Bool] test_specification
|
38
|
+
# Whether the specification is a test specification
|
39
|
+
#
|
40
|
+
def initialize(parent = nil, name = nil, test_specification = false)
|
38
41
|
@attributes_hash = {}
|
39
42
|
@subspecs = []
|
40
43
|
@consumers = {}
|
41
44
|
@parent = parent
|
42
45
|
@hash_value = nil
|
46
|
+
@test_specification = test_specification
|
43
47
|
attributes_hash['name'] = name
|
48
|
+
attributes_hash['test_type'] = :unit if test_specification
|
44
49
|
|
45
50
|
yield self if block_given?
|
46
51
|
end
|
@@ -54,6 +59,11 @@ module Pod
|
|
54
59
|
#
|
55
60
|
attr_accessor :subspecs
|
56
61
|
|
62
|
+
# @return [Bool] If this specification is a test specification.
|
63
|
+
#
|
64
|
+
attr_accessor :test_specification
|
65
|
+
alias_method :test_specification?, :test_specification
|
66
|
+
|
57
67
|
# Checks if a specification is equal to the given one according its name
|
58
68
|
# and to its version.
|
59
69
|
#
|
@@ -203,7 +213,20 @@ module Pod
|
|
203
213
|
|
204
214
|
# @!group Dependencies & Subspecs
|
205
215
|
|
206
|
-
# @return [
|
216
|
+
# @return [Symbol] the test type supported if this is a test specification.
|
217
|
+
#
|
218
|
+
def test_type
|
219
|
+
attributes_hash['test_type'].to_sym
|
220
|
+
end
|
221
|
+
|
222
|
+
# @return [Array<Specification>] the list of all the test subspecs of
|
223
|
+
# a specification.
|
224
|
+
#
|
225
|
+
def test_specs
|
226
|
+
subspecs.select(&:test_specification?)
|
227
|
+
end
|
228
|
+
|
229
|
+
# @return [Array<Specification>] the recursive list of all the subspecs of
|
207
230
|
# a specification.
|
208
231
|
#
|
209
232
|
def recursive_subspecs
|
@@ -232,7 +255,7 @@ module Pod
|
|
232
255
|
#
|
233
256
|
# @return [Specification] the subspec with the given name or self.
|
234
257
|
#
|
235
|
-
def subspec_by_name(relative_name, raise_if_missing = true)
|
258
|
+
def subspec_by_name(relative_name, raise_if_missing = true, include_test_specifications = false)
|
236
259
|
if relative_name.nil? || relative_name == base_name
|
237
260
|
self
|
238
261
|
elsif relative_name.downcase == base_name.downcase
|
@@ -241,7 +264,7 @@ module Pod
|
|
241
264
|
else
|
242
265
|
remainder = relative_name[base_name.size + 1..-1]
|
243
266
|
subspec_name = remainder.split('/').shift
|
244
|
-
subspec = subspecs.find { |s| s.base_name == subspec_name }
|
267
|
+
subspec = subspecs.find { |s| s.base_name == subspec_name && (include_test_specifications || !s.test_specification?) }
|
245
268
|
unless subspec
|
246
269
|
if raise_if_missing
|
247
270
|
raise Informative, 'Unable to find a specification named ' \
|
@@ -250,7 +273,7 @@ module Pod
|
|
250
273
|
return nil
|
251
274
|
end
|
252
275
|
end
|
253
|
-
subspec.subspec_by_name(remainder, raise_if_missing)
|
276
|
+
subspec.subspec_by_name(remainder, raise_if_missing, include_test_specifications)
|
254
277
|
end
|
255
278
|
end
|
256
279
|
|
@@ -274,7 +297,7 @@ module Pod
|
|
274
297
|
#
|
275
298
|
def subspec_dependencies(platform = nil)
|
276
299
|
specs = if default_subspecs.empty?
|
277
|
-
subspecs.compact
|
300
|
+
subspecs.compact.reject(&:test_specification?)
|
278
301
|
else
|
279
302
|
default_subspecs.map do |subspec_name|
|
280
303
|
root.subspec_by_name("#{name}/#{subspec_name}")
|
@@ -288,9 +311,8 @@ module Pod
|
|
288
311
|
|
289
312
|
# Returns the dependencies on other Pods or subspecs of other Pods.
|
290
313
|
#
|
291
|
-
# @param [
|
292
|
-
#
|
293
|
-
# instead of the active one.
|
314
|
+
# @param [Platform] platform
|
315
|
+
# return only dependencies supported on the given platform.
|
294
316
|
#
|
295
317
|
# @note External dependencies are inherited by subspecs
|
296
318
|
#
|
@@ -571,7 +593,7 @@ module Pod
|
|
571
593
|
end
|
572
594
|
|
573
595
|
spec.defined_in_file = path
|
574
|
-
spec.subspec_by_name(subspec_name)
|
596
|
+
spec.subspec_by_name(subspec_name, true)
|
575
597
|
end
|
576
598
|
|
577
599
|
# Sets the path of the `podspec` file used to load the specification.
|
@@ -136,6 +136,14 @@ module Pod
|
|
136
136
|
|
137
137
|
#-----------------------------------------------------------------------#
|
138
138
|
|
139
|
+
# @!group Test Support
|
140
|
+
|
141
|
+
# @return [Symbol] the test type supported by this specification.
|
142
|
+
#
|
143
|
+
spec_attr_accessor :test_type
|
144
|
+
|
145
|
+
#-----------------------------------------------------------------------#
|
146
|
+
|
139
147
|
# @!group File patterns
|
140
148
|
|
141
149
|
# @return [Array<String>] the source files of the Pod.
|
@@ -539,6 +539,7 @@ module Pod
|
|
539
539
|
#
|
540
540
|
def platform=(args)
|
541
541
|
name, deployment_target = args
|
542
|
+
name = :osx if name.to_s == 'macos'
|
542
543
|
attributes_hash['platforms'] = if name
|
543
544
|
{ name.to_s => deployment_target }
|
544
545
|
else
|
@@ -1012,8 +1013,10 @@ module Pod
|
|
1012
1013
|
# ---
|
1013
1014
|
#
|
1014
1015
|
# These are the headers that will be exposed to the user’s project and
|
1015
|
-
# from which documentation will be generated.
|
1016
|
-
#
|
1016
|
+
# from which documentation will be generated. When the library is built,
|
1017
|
+
# these headers will appear in the build directory. If no public headers
|
1018
|
+
# are specified then **all** the headers in source_files are considered
|
1019
|
+
# public.
|
1017
1020
|
#
|
1018
1021
|
# @example
|
1019
1022
|
#
|
@@ -1037,7 +1040,13 @@ module Pod
|
|
1037
1040
|
# These patterns are matched against the public headers (or all the
|
1038
1041
|
# headers if no public headers have been specified) to exclude those
|
1039
1042
|
# headers which should not be exposed to the user project and which
|
1040
|
-
# should not be used to generate the documentation.
|
1043
|
+
# should not be used to generate the documentation. When the library
|
1044
|
+
# is built, these headers will appear in the build directory.
|
1045
|
+
#
|
1046
|
+
# Header files that are not listed as neither public nor private will
|
1047
|
+
# be treated as private, but in addition will not appear in the build
|
1048
|
+
# directory at all.
|
1049
|
+
#
|
1041
1050
|
#
|
1042
1051
|
# @example
|
1043
1052
|
#
|
@@ -1316,6 +1325,46 @@ module Pod
|
|
1316
1325
|
subspec
|
1317
1326
|
end
|
1318
1327
|
|
1328
|
+
# The list of the test types currently supported.
|
1329
|
+
#
|
1330
|
+
SUPPORTED_TEST_TYPES = [:unit].freeze
|
1331
|
+
|
1332
|
+
# The test type this specification supports. This only applies to test specifications.
|
1333
|
+
#
|
1334
|
+
# ---
|
1335
|
+
#
|
1336
|
+
# @example
|
1337
|
+
#
|
1338
|
+
# test_spec.test_type = :unit
|
1339
|
+
#
|
1340
|
+
# @param [Symbol] type
|
1341
|
+
# The test type to use.
|
1342
|
+
attribute :test_type,
|
1343
|
+
:types => [Symbol],
|
1344
|
+
:multi_platform => false
|
1345
|
+
|
1346
|
+
# Represents a test specification for the library. Here you can place all
|
1347
|
+
# your tests for your podspec along with the test dependencies.
|
1348
|
+
#
|
1349
|
+
# ---
|
1350
|
+
#
|
1351
|
+
# @example
|
1352
|
+
#
|
1353
|
+
# Pod::Spec.new do |spec|
|
1354
|
+
# spec.name = 'NSAttributedString+CCLFormat'
|
1355
|
+
#
|
1356
|
+
# spec.test_spec do |test_spec|
|
1357
|
+
# test_spec.source_files = 'NSAttributedString+CCLFormatTests.m'
|
1358
|
+
# test_spec.dependency 'Expecta'
|
1359
|
+
# end
|
1360
|
+
# end
|
1361
|
+
#
|
1362
|
+
def test_spec(name = 'Tests', &block)
|
1363
|
+
subspec = Specification.new(self, name, true, &block)
|
1364
|
+
@subspecs << subspec
|
1365
|
+
subspec
|
1366
|
+
end
|
1367
|
+
|
1319
1368
|
#------------------#
|
1320
1369
|
|
1321
1370
|
# @!method default_subspecs=(subspec_array)
|
@@ -1390,6 +1439,8 @@ module Pod
|
|
1390
1439
|
PlatformProxy.new(self, :osx)
|
1391
1440
|
end
|
1392
1441
|
|
1442
|
+
alias macos osx
|
1443
|
+
|
1393
1444
|
# Provides support for specifying tvOS attributes.
|
1394
1445
|
#
|
1395
1446
|
# @example
|
@@ -59,6 +59,7 @@ module Pod
|
|
59
59
|
attributes_hash = hash.dup
|
60
60
|
subspecs = attributes_hash.delete('subspecs')
|
61
61
|
spec.attributes_hash = attributes_hash
|
62
|
+
spec.test_specification = !attributes_hash['test_type'].nil?
|
62
63
|
if subspecs
|
63
64
|
spec.subspecs = subspecs.map do |s_hash|
|
64
65
|
Specification.from_hash(s_hash, spec)
|
@@ -128,7 +128,7 @@ module Pod
|
|
128
128
|
run_validation_hooks(attributes, spec)
|
129
129
|
end
|
130
130
|
|
131
|
-
# Run validations for multi-platform attributes activating
|
131
|
+
# Run validations for multi-platform attributes activating.
|
132
132
|
#
|
133
133
|
# @return [void]
|
134
134
|
#
|
@@ -364,6 +364,16 @@ module Pod
|
|
364
364
|
end
|
365
365
|
end
|
366
366
|
|
367
|
+
def _validate_test_type(t)
|
368
|
+
unless consumer.spec.test_specification?
|
369
|
+
results.add_error('test_type', 'Test type can only be used for test specifications.')
|
370
|
+
return
|
371
|
+
end
|
372
|
+
supported_test_types = Specification::DSL::SUPPORTED_TEST_TYPES
|
373
|
+
results.add_error('test_type', "The test type `#{t}` is not supported. " \
|
374
|
+
"Supported test type values are #{supported_test_types}.") unless supported_test_types.include?(t)
|
375
|
+
end
|
376
|
+
|
367
377
|
# Performs validations related to github sources.
|
368
378
|
#
|
369
379
|
def perform_github_source_checks(s)
|
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: 1.
|
4
|
+
version: 1.3.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: 2017-
|
12
|
+
date: 2017-06-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
version: 4.0.2
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '6'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
version: 4.0.2
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: nap
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|