cocoapods-core 1.10.0.rc.1 → 1.11.0.beta.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a07277aaf2c3d222a9eebb1bfb75ff5c0952e17886f30a0632b26f770c91e45
4
- data.tar.gz: c24f4c13fb9c94e8edc10ccac147bb21673a1c752cf4130fd44e1f2e2747e38b
3
+ metadata.gz: fc77a2caddc23264c82d1b938d3861baa7db772d1aa64a2e8796d48fce457029
4
+ data.tar.gz: c456ecc4030277077b806f0e4cc73eb4ee292d48278cd2bde8ef45a64a180d32
5
5
  SHA512:
6
- metadata.gz: f104993e125cfb1c689be005954276a1028aefd0cb71914039fce92e6a61a03b5a2169bf3ed8a36c2bedc0f8b7dfb09d4a701fbef41a30cc666c1444f73b6b48
7
- data.tar.gz: e9e285cc61a963e059b4ba311fa16d4c9b6e66ceabd1919101ea110528da5c0d4f4bf77d2e5ff167452a565c1605ec1c91ce5660ea7863ed31148b35d72968aa
6
+ metadata.gz: b3d173d8a43823bba5466e2385c8eaa728f6221a356a00ea557cd1488969154967b8175aed46b39fcb8f632ef18e28f73c8bc1bdbdaa3aa8aa08747733005a60
7
+ data.tar.gz: e9cfcadb169aff82575dac6e0e7a0e293a24cb4f69a603ff153397f168aedd426c0d8a23e1eb40822903d73afdb6f9f89b561df48e3be24dfc3330d9f885205e
@@ -350,7 +350,7 @@ module Pod
350
350
  end
351
351
 
352
352
  unless @check_existing_files_for_update
353
- debug "CDN: #{name} Relative path: #{partial_url} exists! Returning local because checking is only perfomed in repo update"
353
+ debug "CDN: #{name} Relative path: #{partial_url} exists! Returning local because checking is only performed in repo update"
354
354
  return Promises.fulfilled_future(partial_url, HYDRA_EXECUTOR)
355
355
  end
356
356
  end
@@ -371,7 +371,7 @@ module Pod
371
371
 
372
372
  download_task = download_typhoeus_impl_async(file_remote_url, etag).then do |response|
373
373
  case response.response_code
374
- when 301
374
+ when 301, 302
375
375
  redirect_location = response.headers['location']
376
376
  debug "CDN: #{name} Redirecting from #{file_remote_url} to #{redirect_location}"
377
377
  download_and_save_with_retries_async(partial_url, redirect_location, etag)
@@ -109,11 +109,16 @@ module Pod
109
109
  # one or more version restrictions).
110
110
  #
111
111
  def requirement
112
- if specific_version
113
- Requirement.new(Version.new(specific_version.version))
114
- else
115
- @requirement
116
- end
112
+ @specific_requirement || @requirement
113
+ end
114
+
115
+ # @param [Version] version the specific version to point to
116
+ #
117
+ def specific_version=(version)
118
+ @specific_version = version
119
+ @specific_requirement = if version
120
+ Requirement.new(Version.new(version.version))
121
+ end
117
122
  end
118
123
 
119
124
  # @return [Bool] whether the dependency points to a subspec.
@@ -196,9 +201,9 @@ module Pod
196
201
  def ==(other)
197
202
  self.class == other.class &&
198
203
  name == other.name &&
199
- requirement == other.requirement &&
200
204
  external_source == other.external_source &&
201
- podspec_repo == other.podspec_repo
205
+ podspec_repo == other.podspec_repo &&
206
+ requirement == other.requirement
202
207
  end
203
208
  alias_method :eql?, :==
204
209
 
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods-core.
3
3
  #
4
- CORE_VERSION = '1.10.0.rc.1'.freeze unless defined? Pod::CORE_VERSION
4
+ CORE_VERSION = '1.11.0.beta.1'.freeze unless defined? Pod::CORE_VERSION
5
5
  end
@@ -166,6 +166,23 @@ module Pod
166
166
  end
167
167
  end
168
168
 
169
+ # Calls the pre integrate callback if defined.
170
+ #
171
+ # @param [Pod::Installer] installer
172
+ # the installer that is performing the installation.
173
+ #
174
+ # @return [Bool] whether a pre integrate callback was specified and it was
175
+ # called.
176
+ #
177
+ def pre_integrate!(installer)
178
+ if @pre_integrate_callback
179
+ @pre_integrate_callback.call(installer)
180
+ true
181
+ else
182
+ false
183
+ end
184
+ end
185
+
169
186
  # Calls the post install callback if defined.
170
187
  #
171
188
  # @param [Pod::Installer] installer
@@ -310,9 +327,9 @@ module Pod
310
327
  podfile = Podfile.new(path) do
311
328
  # rubocop:disable Lint/RescueException
312
329
  begin
313
- # rubocop:disable Eval
330
+ # rubocop:disable Security/Eval
314
331
  eval(contents, nil, path.to_s)
315
- # rubocop:enable Eval
332
+ # rubocop:enable Security/Eval
316
333
  rescue Exception => e
317
334
  message = "Invalid `#{path.basename}` file: #{e.message}"
318
335
  raise DSLError.new(message, path, e, contents)
@@ -921,9 +921,7 @@ module Pod
921
921
  # This hook allows you to make any changes to the Pods after they have
922
922
  # been downloaded but before they are installed.
923
923
  #
924
- # It receives the
925
- # [`Pod::Installer`](http://rubydoc.info/gems/cocoapods/Pod/Installer/)
926
- # as its only argument.
924
+ # It receives the [Pod::Installer] as its only argument.
927
925
  #
928
926
  # @example Defining a pre-install hook in a Podfile.
929
927
  #
@@ -936,15 +934,31 @@ module Pod
936
934
  @pre_install_callback = block
937
935
  end
938
936
 
937
+ # This hook allows you to make changes before the project is written
938
+ # to disk.
939
+ #
940
+ # It receives the [Pod::Installer] as its only argument.
941
+ #
942
+ # @example Customizing the dependencies before integration
943
+ #
944
+ # pre_integrate do |installer|
945
+ # # perform some changes on dependencies
946
+ # end
947
+ #
948
+ # @return [void]
949
+ #
950
+ def pre_integrate(&block)
951
+ raise Informative, 'Specifying multiple `pre_integrate` hooks is unsupported.' if @pre_integrate_callback
952
+ @pre_integrate_callback = block
953
+ end
954
+
939
955
  # This hook allows you to make any last changes to the generated Xcode
940
956
  # project before it is written to disk, or any other tasks you might want
941
957
  # to perform.
942
958
  #
943
- # It receives the
944
- # [`Pod::Installer`](http://rubydoc.info/gems/cocoapods/Pod/Installer/)
945
- # as its only argument.
959
+ # It receives the [Pod::Installer] as its only argument.
946
960
  #
947
- # @example Customising the build settings of all targets
961
+ # @example Customizing the build settings of all targets
948
962
  #
949
963
  # post_install do |installer|
950
964
  # installer.pods_project.targets.each do |target|
@@ -964,11 +978,9 @@ module Pod
964
978
  # This hook allows you to make changes after the project is written
965
979
  # to disk.
966
980
  #
967
- # It receives the
968
- # [`Pod::Installer`](http://rubydoc.info/gems/cocoapods/Pod/Installer/)
969
- # as its only argument.
981
+ # It receives the [Pod::Installer] as its only argument.
970
982
  #
971
- # @example Customising the build settings of all targets
983
+ # @example Customizing the build settings of all targets
972
984
  #
973
985
  # post_integrate do |installer|
974
986
  # # some change after project write to disk
@@ -963,7 +963,7 @@ module Pod
963
963
  if exclusive?
964
964
  whitelist_hash
965
965
  else
966
- parent.send(:configuration_pod_whitelist).merge(whitelist_hash) { |l, r| (l + r).uniq }
966
+ parent.send(:configuration_pod_whitelist).merge(whitelist_hash) { |_, l, r| Array(l).concat(r).uniq }
967
967
  end
968
968
  end
969
969
 
@@ -15,7 +15,7 @@ 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
18
+ DefaultRequirement = ['>=', Version.new(0)] # rubocop:disable Naming/ConstantName
19
19
 
20
20
  #-------------------------------------------------------------------------#
21
21
 
@@ -167,9 +167,11 @@ module Pod
167
167
  pod_dir = pod_path(name)
168
168
  return unless pod_dir.exist?
169
169
  @versions_by_name[name] ||= pod_dir.children.map do |v|
170
+ next nil unless v.directory?
170
171
  basename = v.basename.to_s
172
+ next unless basename[0, 1] != '.'
171
173
  begin
172
- Version.new(basename) if v.directory? && basename[0, 1] != '.'
174
+ Version.new(basename)
173
175
  rescue ArgumentError
174
176
  raise Informative, 'An unexpected version directory ' \
175
177
  "`#{basename}` was encountered for the " \
@@ -266,6 +268,11 @@ module Pod
266
268
  query = query.root_name
267
269
  end
268
270
 
271
+ if (versions = @versions_by_name[query]) && !versions.empty?
272
+ set = set(query)
273
+ return set if set.specification_name == query
274
+ end
275
+
269
276
  found = []
270
277
  Pathname.glob(pod_path(query)) do |path|
271
278
  next unless Dir.foreach(path).any? { |child| child != '.' && child != '..' }
@@ -1,3 +1,5 @@
1
+ require 'public_suffix'
2
+
1
3
  module Pod
2
4
  class Source
3
5
  class Manager
@@ -265,6 +267,11 @@ module Pod
265
267
  require 'json'
266
268
  begin
267
269
  index = JSON.parse(search_index_path.read)
270
+ unless index # JSON.parse("null") => nil
271
+ search_index_path.delete
272
+ return nil
273
+ end
274
+
268
275
  index if index.is_a?(Hash) # TODO: should we also check if hash has correct hierarchy?
269
276
  rescue JSON::ParserError
270
277
  search_index_path.delete
@@ -404,12 +411,12 @@ module Pod
404
411
  # @example A non-Github.com URL
405
412
  #
406
413
  # name_for_url('https://sourceforge.org/Artsy/Specs.git')
407
- # # sourceforge-artsy-specs
414
+ # # sourceforge-artsy
408
415
  #
409
416
  # @example A file URL
410
417
  #
411
418
  # name_for_url('file:///Artsy/Specs.git')
412
- # # artsy-specs
419
+ # # artsy
413
420
  #
414
421
  # @param [#to_s] url
415
422
  # The URL of the source.
@@ -419,33 +426,52 @@ module Pod
419
426
  def name_for_url(url)
420
427
  base_from_host_and_path = lambda do |host, path|
421
428
  if host && !host.empty?
422
- base = host.split('.')[-2] || host
423
- base += '-'
429
+ domain = PublicSuffix.parse(host) rescue nil
430
+ base = [domain&.sld || host]
431
+ base = [] if base == %w(github)
424
432
  else
425
- base = ''
433
+ base = []
426
434
  end
427
435
 
428
- base + path.gsub(/.git$/, '').gsub(%r{^/}, '').split('/').join('-')
436
+ path = path.gsub(/.git$/, '').gsub(%r{^/}, '').split('/')
437
+ path.pop if path.last == 'specs'
438
+
439
+ (base + path).join('-')
440
+ end
441
+
442
+ valid_url = lambda do |url|
443
+ url =~ URI.regexp && (URI(url) rescue false)
429
444
  end
430
445
 
431
- case url.to_s.downcase
446
+ valid_scp_url = lambda do |url|
447
+ valid_url['scp://' + url]
448
+ end
449
+
450
+ url = url.to_s.downcase
451
+
452
+ case url
432
453
  when %r{https://#{Regexp.quote(trunk_repo_hostname)}}i
454
+ # Main CDN repo
433
455
  base = Pod::TrunkSource::TRUNK_REPO_NAME
434
- when %r{github.com[:/]+(.+)/(.+)}
435
- base = Regexp.last_match[1]
436
- when %r{^\S+@(\S+)[:/]+(.+)$}
437
- host, path = Regexp.last_match.captures
438
- base = base_from_host_and_path[host, path]
439
- when URI.regexp
440
- url = URI(url.downcase)
456
+ when valid_url
457
+ # HTTPS URL or something similar
458
+ url = valid_url[url]
459
+ base = base_from_host_and_path[url.host, url.path]
460
+ when valid_scp_url
461
+ # SCP-style URLs for private git repos
462
+ url = valid_scp_url[url]
441
463
  base = base_from_host_and_path[url.host, url.path]
464
+ when %r{(?:git|ssh|https?|[a-z0-9_-]+@([-\w.]+)):(\/\/)?(.*?)(\.git)(\/?|\#[-\d\w._]+?)$}i
465
+ # Additional SCP-style URLs for private git repos
466
+ host, _, path = Regexp.last_match.captures
467
+ base = base_from_host_and_path[host, path]
442
468
  else
443
- base = url.to_s.downcase
469
+ # This is nearly impossible, with all the previous cases
470
+ raise Informative, "Couldn't determine repo name for URL: #{url}"
444
471
  end
445
472
 
446
473
  name = base
447
- infinity = 1.0 / 0
448
- (1..infinity).each do |i|
474
+ (1..).each do |i|
449
475
  break unless source_dir(name).exist?
450
476
  name = "#{base}-#{i}"
451
477
  end
@@ -824,9 +824,9 @@ module Pod
824
824
  #
825
825
  #
826
826
  def self._eval_podspec(string, path)
827
- # rubocop:disable Eval
827
+ # rubocop:disable Security/Eval
828
828
  eval(string, nil, path.to_s)
829
- # rubocop:enable Eval
829
+ # rubocop:enable Security/Eval
830
830
 
831
831
  # rubocop:disable Lint/RescueException
832
832
  rescue Exception => e
@@ -168,6 +168,10 @@ module Pod
168
168
  #
169
169
  spec_attr_accessor :public_header_files
170
170
 
171
+ # @return [Array<String>] the project headers of the Pod.
172
+ #
173
+ spec_attr_accessor :project_header_files
174
+
171
175
  # @return [Array<String>] the private headers of the Pod.
172
176
  #
173
177
  spec_attr_accessor :private_header_files
@@ -182,7 +186,13 @@ module Pod
182
186
  #
183
187
  spec_attr_accessor :vendored_libraries
184
188
 
185
- # @return [Hash{String=>String}]] hash where the keys are the names of
189
+ # @return [Hash{String => Array<String>}] hash where the keys are the tags of
190
+ # the on demand resources and the values are their relative file
191
+ # patterns.
192
+ #
193
+ spec_attr_accessor :on_demand_resources
194
+
195
+ # @return [Hash{String=>String}]] hash where the keys are the names of
186
196
  # the resource bundles and the values are their relative file
187
197
  # patterns.
188
198
  #
@@ -455,6 +465,24 @@ module Pod
455
465
  Specification.convert_keys_to_symbol(value, :recursive => false) if value && value.is_a?(Hash)
456
466
  end
457
467
 
468
+ # Ensures that the file patterns of the on demand resources are contained in
469
+ # an array.
470
+ #
471
+ # @param [String, Array, Hash] value.
472
+ # The value of the attribute as specified by the user.
473
+ #
474
+ # @return [Hash] the on demand resources1.
475
+ #
476
+ def _prepare_on_demand_resources(value)
477
+ result = {}
478
+ if value
479
+ value.each do |key, patterns|
480
+ result[key] = [*patterns].compact
481
+ end
482
+ end
483
+ result
484
+ end
485
+
458
486
  # Ensures that the file patterns of the resource bundles are contained in
459
487
  # an array.
460
488
  #
@@ -299,6 +299,36 @@ module Pod
299
299
 
300
300
  #------------------#
301
301
 
302
+ # @!method readme=(readme)
303
+ #
304
+ # The URL for the README markdown file for this pod version.
305
+ #
306
+ # @example
307
+ #
308
+ # spec.readme = 'https://www.example.com/Pod-1.5-README.md'
309
+ #
310
+ # @param [String] readme
311
+ # the readme markdown URL.
312
+ #
313
+ root_attribute :readme
314
+
315
+ #------------------#
316
+
317
+ # @!method changelog=(changelog)
318
+ #
319
+ # The URL for the CHANGELOG markdown file for this pod version.
320
+ #
321
+ # @example
322
+ #
323
+ # spec.changelog = 'https://www.example.com/Pod-1.5-CHANGELOG.md'
324
+ #
325
+ # @param [String] changelog
326
+ # the changelog markdown URL.
327
+ #
328
+ root_attribute :changelog
329
+
330
+ #------------------#
331
+
302
332
  # The keys accepted by the hash of the source attribute.
303
333
  #
304
334
  SOURCE_KEYS = {
@@ -1047,7 +1077,7 @@ module Pod
1047
1077
  SCRIPT_PHASE_OPTIONAL_KEYS = [:shell_path, :input_files, :output_files, :input_file_lists, :output_file_lists,
1048
1078
  :show_env_vars_in_log, :execution_position, :dependency_file].freeze
1049
1079
 
1050
- EXECUTION_POSITION_KEYS = [:before_compile, :after_compile, :any].freeze
1080
+ EXECUTION_POSITION_KEYS = [:before_compile, :after_compile, :before_headers, :after_headers, :any].freeze
1051
1081
 
1052
1082
  ALL_SCRIPT_PHASE_KEYS = (SCRIPT_PHASE_REQUIRED_KEYS + SCRIPT_PHASE_OPTIONAL_KEYS).freeze
1053
1083
 
@@ -1229,6 +1259,32 @@ module Pod
1229
1259
 
1230
1260
  #------------------#
1231
1261
 
1262
+ # @!method project_header_files=(project_header_files)
1263
+ #
1264
+ # A list of file patterns that should be used to mark project headers.
1265
+ #
1266
+ # ---
1267
+ #
1268
+ # These patterns are matched against the public headers (or all the
1269
+ # headers if no public headers have been specified) to exclude those
1270
+ # headers which should not be exposed to the user project and which
1271
+ # should not be used to generate the documentation. When the library
1272
+ # is built, these headers will _not_ appear in the build directory.
1273
+ #
1274
+ #
1275
+ # @example
1276
+ #
1277
+ # spec.project_header_files = 'Headers/Project/*.h'
1278
+ #
1279
+ # @param [String, Array<String>] project_header_files
1280
+ # the project headers of the Pod.
1281
+ #
1282
+ attribute :project_header_files,
1283
+ :container => Array,
1284
+ :file_patterns => true
1285
+
1286
+ #------------------#
1287
+
1232
1288
  # @!method private_header_files=(private_header_files)
1233
1289
  #
1234
1290
  # A list of file patterns that should be used to mark private headers.
@@ -1241,7 +1297,7 @@ module Pod
1241
1297
  # should not be used to generate the documentation. When the library
1242
1298
  # is built, these headers will appear in the build directory.
1243
1299
  #
1244
- # Header files that are not listed as neither public nor private will
1300
+ # Header files that are not listed as neither public nor project or private will
1245
1301
  # be treated as private, but in addition will not appear in the build
1246
1302
  # directory at all.
1247
1303
  #
@@ -1305,6 +1361,32 @@ module Pod
1305
1361
 
1306
1362
  #------------------#
1307
1363
 
1364
+ # @!method on_demand_resources=(on_demand_resources)
1365
+ #
1366
+ # A hash of on_demand_resources that should be copied into the target bundle. Resources specified here
1367
+ # will automatically become part of the resources build phase of the target.
1368
+ #
1369
+ # @example
1370
+ #
1371
+ # s.on_demand_resources = {
1372
+ # 'Tag1' => 'file1.png'
1373
+ # }
1374
+ #
1375
+ # s.on_demand_resources = {
1376
+ # 'Tag1' => ['file1.png', 'file2.png']
1377
+ # }
1378
+ #
1379
+ # @param [Hash{String=>String}, Hash{String=>Array<String>}] on_demand_resources
1380
+ # The on_demand_resources shipped with the Pod.
1381
+ #
1382
+ attribute :on_demand_resources,
1383
+ :types => [String, Array],
1384
+ :container => Hash,
1385
+ :file_patterns => true,
1386
+ :singularize => true
1387
+
1388
+ #------------------#
1389
+
1308
1390
  # @!method resource_bundles=(*resource_bundles)
1309
1391
  #
1310
1392
  # This attribute allows to define the name and the file of the resource
@@ -1428,6 +1510,12 @@ module Pod
1428
1510
  # The module map file that should be used when this pod is integrated as
1429
1511
  # a framework.
1430
1512
  #
1513
+ # `false` indicates that the default CocoaPods `modulemap` file should not
1514
+ # be generated.
1515
+ #
1516
+ # `true` is the default and indicates that the default CocoaPods
1517
+ # `modulemap` file should be generated.
1518
+ #
1431
1519
  # ---
1432
1520
  #
1433
1521
  # By default, CocoaPods creates a module map file based upon the public
@@ -1437,11 +1525,17 @@ module Pod
1437
1525
  #
1438
1526
  # spec.module_map = 'source/module.modulemap'
1439
1527
  #
1440
- # @param [String] module_map
1441
- # the path to the module map file that should be used.
1528
+ # @example
1529
+ #
1530
+ # spec.module_map = false
1531
+ #
1532
+ # @param [String, Bool] module_map
1533
+ # the path to the module map file that should be used
1534
+ # or whether to disable module_map generation.
1442
1535
  #
1443
1536
  attribute :module_map,
1444
- :root_only => true
1537
+ :types => [TrueClass, FalseClass, String],
1538
+ :root_only => true
1445
1539
 
1446
1540
  #-----------------------------------------------------------------------#
1447
1541
 
@@ -242,9 +242,6 @@ module Pod
242
242
  def _validate_version(v)
243
243
  if v.to_s.empty?
244
244
  results.add_error('version', 'A version is required.')
245
- elsif v <= Version::ZERO
246
- results.add_error('version', 'The version of the spec should be' \
247
- ' higher than 0.')
248
245
  end
249
246
  end
250
247
 
@@ -337,19 +334,6 @@ module Pod
337
334
  end
338
335
  end
339
336
 
340
- # Performs validations related to the `vendored_libraries` attribute.
341
- #
342
- # @param [Array<String>] vendored_libraries the values specified in the `vendored_libraries` attribute
343
- #
344
- def _validate_vendored_libraries(vendored_libraries)
345
- vendored_libraries.each do |lib|
346
- lib_name = lib.downcase
347
- unless lib_name.end_with?('.a') && lib_name.start_with?('lib')
348
- results.add_warning('vendored_libraries', "`#{File.basename(lib)}` does not match the expected static library name format `lib[name].a`")
349
- end
350
- end
351
- end
352
-
353
337
  # Performs validations related to the `license` attribute.
354
338
  #
355
339
  def _validate_license(l)
@@ -520,6 +504,24 @@ module Pod
520
504
  end
521
505
  end
522
506
 
507
+ # Performs validations related to the `readme` attribute.
508
+ #
509
+ def _validate_readme(s)
510
+ if s =~ %r{https://www.example.com/README}
511
+ results.add_warning('readme', 'The readme has ' \
512
+ 'not been updated from the default.')
513
+ end
514
+ end
515
+
516
+ # Performs validations related to the `changelog` attribute.
517
+ #
518
+ def _validate_changelog(s)
519
+ if s =~ %r{https://www.example.com/CHANGELOG}
520
+ results.add_warning('changelog', 'The changelog has ' \
521
+ 'not been updated from the default.')
522
+ end
523
+ end
524
+
523
525
  # @param [Hash,Object] value
524
526
  #
525
527
  def _validate_info_plist(value)
@@ -102,7 +102,7 @@ module Pod
102
102
  # Check empty subspec attributes
103
103
  #
104
104
  def check_if_spec_is_empty
105
- methods = %w( source_files resources resource_bundles preserve_paths
105
+ methods = %w( source_files on_demand_resources resources resource_bundles preserve_paths
106
106
  dependencies vendored_libraries vendored_frameworks )
107
107
  empty_patterns = methods.all? { |m| consumer.send(m).empty? }
108
108
  empty = empty_patterns && consumer.spec.subspecs.empty?
@@ -99,6 +99,18 @@ module Pod
99
99
  attributes_hash['social_media_url']
100
100
  end
101
101
 
102
+ # @return [String] The readme.
103
+ #
104
+ def readme
105
+ attributes_hash['readme']
106
+ end
107
+
108
+ # @return [String] The changelog.
109
+ #
110
+ def changelog
111
+ attributes_hash['changelog']
112
+ end
113
+
102
114
  # @return [Hash] A hash containing the license information of the Pod.
103
115
  #
104
116
  # @note The indentation is stripped from the license text.
@@ -212,8 +212,6 @@ module Pod
212
212
 
213
213
  #-----------------------------------------------------------------------#
214
214
 
215
- private
216
-
217
215
  # @!group Array Sorting
218
216
 
219
217
  # Sorts an array using another one as a sort hint. All the values of the
@@ -284,26 +282,28 @@ module Pod
284
282
  RESOLVED_TAGS = Regexp.union(
285
283
  'null', 'Null', 'NULL', '~', '', # resolve to null
286
284
  'true', 'True', 'TRUE', 'false', 'False', 'FALSE', # bool
285
+ 'yes', 'Yes', 'YES', 'no', 'No', 'NO', # yes/no
286
+ 'on', 'On', 'ON', 'off', 'Off', 'OFF', # no/off
287
287
  /[-+]?[0-9]+/, # base 10 int
288
288
  /00[0-7]+/, # base 8 int
289
289
  /0x[0-9a-fA-F]+/, # base 16 int
290
290
  /[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?/, # float
291
291
  /[-+]?\.(inf|Inf|INF)/, # infinity
292
- /\.(nan|NaN|NAN)/, # NaN
292
+ /\.(nan|NaN|NAN)/ # NaN
293
293
  )
294
294
  private_constant :RESOLVED_TAGS
295
295
 
296
296
  INDICATOR_START_CHARS = %w(- ? : , [ ] { } # & * ! | > ' " % @ `).freeze
297
- INDICATOR_START = /\A#{Regexp.union(INDICATOR_START_CHARS)}/
297
+ INDICATOR_START = /\A#{Regexp.union(INDICATOR_START_CHARS)}/.freeze
298
298
  private_constant :INDICATOR_START_CHARS, :INDICATOR_START
299
299
 
300
- RESOLVED_TAGS_PATTERN = /\A#{Regexp.union(RESOLVED_TAGS)}\z/
300
+ RESOLVED_TAGS_PATTERN = /\A#{Regexp.union(RESOLVED_TAGS)}\z/.freeze
301
301
  private_constant :RESOLVED_TAGS_PATTERN
302
302
 
303
303
  VALID_PLAIN_SCALAR_STRING = %r{\A
304
304
  [\w&&[^#{INDICATOR_START_CHARS}]] # valid first character
305
305
  [\w/\ \(\)~<>=\.:`,-]* # all characters allowed after the first one
306
- \z}ox
306
+ \z}ox.freeze
307
307
  private_constant :VALID_PLAIN_SCALAR_STRING
308
308
 
309
309
  def process_string(string)
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.10.0.rc.1
4
+ version: 1.11.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
@@ -9,28 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-15 00:00:00.000000000 Z
12
+ date: 2021-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '5.0'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '6'
23
+ version: '7'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ">"
28
+ - - ">="
29
29
  - !ruby/object:Gem::Version
30
30
  version: '5.0'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '6'
33
+ version: '7'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: nap
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -121,28 +121,28 @@ dependencies:
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.6'
124
+ version: '2.8'
125
125
  type: :runtime
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '2.6'
131
+ version: '2.8'
132
132
  - !ruby/object:Gem::Dependency
133
133
  name: public_suffix
134
134
  requirement: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: '4.0'
139
139
  type: :runtime
140
140
  prerelease: false
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: '4.0'
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: bacon
148
148
  requirement: !ruby/object:Gem::Requirement
@@ -224,15 +224,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
224
  requirements:
225
225
  - - ">="
226
226
  - !ruby/object:Gem::Version
227
- version: 2.3.3
227
+ version: '2.6'
228
228
  required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  requirements:
230
- - - ">="
230
+ - - ">"
231
231
  - !ruby/object:Gem::Version
232
- version: '0'
232
+ version: 1.3.1
233
233
  requirements: []
234
- rubygems_version: 3.0.6
234
+ rubygems_version: 3.0.3
235
235
  signing_key:
236
- specification_version: 3
236
+ specification_version: 4
237
237
  summary: The models of CocoaPods
238
238
  test_files: []