cocoapods 1.10.0 → 1.11.0

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -5
  3. data/README.md +11 -11
  4. data/lib/cocoapods/command/outdated.rb +12 -1
  5. data/lib/cocoapods/command/repo/push.rb +17 -0
  6. data/lib/cocoapods/command/spec/cat.rb +3 -1
  7. data/lib/cocoapods/command/spec/lint.rb +1 -1
  8. data/lib/cocoapods/command/spec/which.rb +3 -1
  9. data/lib/cocoapods/command/spec.rb +18 -9
  10. data/lib/cocoapods/config.rb +1 -1
  11. data/lib/cocoapods/downloader/cache.rb +95 -6
  12. data/lib/cocoapods/downloader.rb +4 -2
  13. data/lib/cocoapods/external_sources/podspec_source.rb +1 -1
  14. data/lib/cocoapods/gem_version.rb +1 -1
  15. data/lib/cocoapods/generator/acknowledgements.rb +1 -1
  16. data/lib/cocoapods/generator/app_target_helper.rb +7 -3
  17. data/lib/cocoapods/generator/copy_dsyms_script.rb +4 -4
  18. data/lib/cocoapods/generator/copy_xcframework_script.rb +4 -48
  19. data/lib/cocoapods/generator/embed_frameworks_script.rb +2 -1
  20. data/lib/cocoapods/generator/script_phase_constants.rb +1 -0
  21. data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +31 -4
  22. data/lib/cocoapods/installer/analyzer.rb +12 -8
  23. data/lib/cocoapods/installer/podfile_validator.rb +2 -2
  24. data/lib/cocoapods/installer/pre_integrate_hooks_context.rb +9 -0
  25. data/lib/cocoapods/installer/project_cache/project_cache_analyzer.rb +9 -2
  26. data/lib/cocoapods/installer/project_cache/project_installation_cache.rb +15 -2
  27. data/lib/cocoapods/installer/project_cache/target_cache_key.rb +7 -4
  28. data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +149 -9
  29. data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +10 -3
  30. data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +25 -6
  31. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb +6 -19
  32. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +70 -58
  33. data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +48 -6
  34. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +2 -2
  35. data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +2 -5
  36. data/lib/cocoapods/installer/xcode/pods_project_generator.rb +1 -1
  37. data/lib/cocoapods/installer.rb +52 -4
  38. data/lib/cocoapods/resolver.rb +4 -4
  39. data/lib/cocoapods/sandbox/file_accessor.rb +57 -10
  40. data/lib/cocoapods/sandbox/headers_store.rb +3 -1
  41. data/lib/cocoapods/sandbox/path_list.rb +1 -1
  42. data/lib/cocoapods/sandbox/pod_dir_cleaner.rb +1 -1
  43. data/lib/cocoapods/sources_manager.rb +14 -8
  44. data/lib/cocoapods/target/aggregate_target.rb +23 -1
  45. data/lib/cocoapods/target/build_settings.rb +45 -20
  46. data/lib/cocoapods/target/pod_target.rb +47 -22
  47. data/lib/cocoapods/target.rb +1 -1
  48. data/lib/cocoapods/user_interface.rb +4 -0
  49. data/lib/cocoapods/validator.rb +25 -5
  50. data/lib/cocoapods/version_metadata.rb +1 -1
  51. data/lib/cocoapods/xcode/xcframework/xcframework_slice.rb +10 -1
  52. data/lib/cocoapods/xcode/xcframework.rb +8 -3
  53. metadata +26 -19
@@ -137,6 +137,10 @@ module Pod
137
137
  # The indentation level relative to the current,
138
138
  # when the message is printed.
139
139
  #
140
+ # @yield The action, this block is always executed.
141
+ #
142
+ # @return [void]
143
+ #
140
144
  def message(message, verbose_prefix = '', relative_indentation = 2)
141
145
  message = verbose_prefix + message if config.verbose?
142
146
  puts_indented message if config.verbose?
@@ -118,7 +118,7 @@ module Pod
118
118
  # Replace default spec with a subspec if asked for
119
119
  a_spec = spec
120
120
  if spec && @only_subspec
121
- subspec_name = @only_subspec.start_with?(spec.root.name) ? @only_subspec : "#{spec.root.name}/#{@only_subspec}"
121
+ subspec_name = @only_subspec.start_with?("#{spec.root.name}/") ? @only_subspec : "#{spec.root.name}/#{@only_subspec}"
122
122
  a_spec = spec.subspec_by_name(subspec_name, true, true)
123
123
  @subspec_name = a_spec.name
124
124
  end
@@ -443,7 +443,7 @@ module Pod
443
443
  if !resp
444
444
  warning('url', "There was a problem validating the URL #{url}.", true)
445
445
  elsif !resp.success?
446
- warning('url', "The URL (#{url}) is not reachable.", true)
446
+ note('url', "The URL (#{url}) is not reachable.", true)
447
447
  end
448
448
 
449
449
  resp
@@ -581,6 +581,9 @@ module Pod
581
581
  def create_app_project
582
582
  app_project = Xcodeproj::Project.new(validation_dir + 'App.xcodeproj')
583
583
  app_target = Pod::Generator::AppTargetHelper.add_app_target(app_project, consumer.platform_name, deployment_target)
584
+ sandbox = Sandbox.new(config.sandbox_root)
585
+ info_plist_path = app_project.path.dirname.+('App/App-Info.plist')
586
+ Pod::Installer::Xcode::PodsProjectGenerator::TargetInstallerHelper.create_info_plist_file_with_sandbox(sandbox, info_plist_path, app_target, '1.0.0', Platform.new(consumer.platform_name), :appl)
584
587
  Pod::Generator::AppTargetHelper.add_swift_version(app_target, derived_swift_version)
585
588
  # Lint will fail if a AppIcon is set but no image is found with such name
586
589
  # Happens only with Static Frameworks enabled but shouldn't be set anyway
@@ -712,8 +715,9 @@ module Pod
712
715
  if scheme.nil?
713
716
  UI.warn "Skipping compilation with `xcodebuild` because target contains no sources.\n".yellow
714
717
  else
718
+ requested_configuration = configuration ? configuration : 'Release'
715
719
  if analyze
716
- output = xcodebuild('analyze', scheme, 'Release', :deployment_target => deployment_target)
720
+ output = xcodebuild('analyze', scheme, requested_configuration, :deployment_target => deployment_target)
717
721
  find_output = Executable.execute_command('find', [validation_dir, '-name', '*.html'], false)
718
722
  if find_output != ''
719
723
  message = 'Static Analysis failed.'
@@ -722,7 +726,7 @@ module Pod
722
726
  error('build_pod', message)
723
727
  end
724
728
  else
725
- output = xcodebuild('build', scheme, configuration ? configuration : 'Release', :deployment_target => deployment_target)
729
+ output = xcodebuild('build', scheme, requested_configuration, :deployment_target => deployment_target)
726
730
  end
727
731
  parsed_output = parse_xcodebuild_output(output)
728
732
  translate_output_to_linter_messages(parsed_output)
@@ -774,7 +778,7 @@ module Pod
774
778
 
775
779
  FILE_PATTERNS = %i(source_files resources preserve_paths vendored_libraries
776
780
  vendored_frameworks public_header_files preserve_paths
777
- private_header_files resource_bundles).freeze
781
+ project_header_files private_header_files resource_bundles).freeze
778
782
 
779
783
  # It checks that every file pattern specified in a spec yields
780
784
  # at least one file. It requires the pods to be already present
@@ -810,6 +814,22 @@ module Pod
810
814
  add_result(message_type, 'file patterns', "The `#{attr_name}` pattern did not match any file.")
811
815
  end
812
816
 
817
+ def _validate_vendored_libraries
818
+ file_accessor.vendored_libraries.each do |lib|
819
+ basename = File.basename(lib)
820
+ lib_name = basename.downcase
821
+ unless lib_name.end_with?('.a') && lib_name.start_with?('lib')
822
+ warning('vendored_libraries', "`#{basename}` does not match the expected static library name format `lib[name].a`")
823
+ end
824
+ end
825
+ validate_nonempty_patterns(:vendored_libraries, :warning)
826
+ end
827
+
828
+ def _validate_project_header_files
829
+ _validate_header_files(:project_header_files)
830
+ validate_nonempty_patterns(:project_header_files, :warning)
831
+ end
832
+
813
833
  def _validate_private_header_files
814
834
  _validate_header_files(:private_header_files)
815
835
  validate_nonempty_patterns(:private_header_files, :warning)
@@ -1,6 +1,6 @@
1
1
  module Pod
2
2
  module VersionMetadata
3
- CACHE_VERSION = '002'.freeze
3
+ CACHE_VERSION = '003'.freeze
4
4
 
5
5
  def self.gem_version
6
6
  Pod::VERSION
@@ -121,7 +121,16 @@ module Pod
121
121
  # @return [Pathname] the path to the bundled binary
122
122
  #
123
123
  def binary_path
124
- path + name
124
+ @binary_path ||= begin
125
+ case package_type
126
+ when :framework
127
+ path + name
128
+ when :library
129
+ path
130
+ else
131
+ raise Informative, "Invalid package type `#{package_type}`"
132
+ end
133
+ end
125
134
  end
126
135
  end
127
136
  end
@@ -5,6 +5,10 @@ require 'cocoapods/xcode/xcframework/xcframework_slice'
5
5
  module Pod
6
6
  module Xcode
7
7
  class XCFramework
8
+ # @return [String] target_name the target name this XCFramework belongs to
9
+ #
10
+ attr_reader :target_name
11
+
8
12
  # @return [Pathname] path the path to the .xcframework on disk
9
13
  #
10
14
  attr_reader :path
@@ -23,12 +27,13 @@ module Pod
23
27
 
24
28
  # Initializes an XCFramework instance with a path on disk
25
29
  #
26
- # @param [Pathname, String] path
27
- # The path to the .xcframework on disk
30
+ # @param [String] target_name @see target_name
31
+ # @param [Pathname, String] path @see path
28
32
  #
29
33
  # @return [XCFramework] the xcframework at the given path
30
34
  #
31
- def initialize(path)
35
+ def initialize(target_name, path)
36
+ @target_name = target_name
32
37
  @path = Pathname.new(path).tap do |p|
33
38
  raise 'Absolute path is required' unless p.absolute?
34
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eloy Duran
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-10-20 00:00:00.000000000 Z
14
+ date: 2021-09-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: cocoapods-core
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 1.10.0
22
+ version: 1.11.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 1.10.0
29
+ version: 1.11.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: claide
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -173,21 +173,21 @@ dependencies:
173
173
  requirements:
174
174
  - - "~>"
175
175
  - !ruby/object:Gem::Version
176
- version: 0.6.6
176
+ version: 0.8.0
177
177
  type: :runtime
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
181
  - - "~>"
182
182
  - !ruby/object:Gem::Version
183
- version: 0.6.6
183
+ version: 0.8.0
184
184
  - !ruby/object:Gem::Dependency
185
185
  name: xcodeproj
186
186
  requirement: !ruby/object:Gem::Requirement
187
187
  requirements:
188
188
  - - ">="
189
189
  - !ruby/object:Gem::Version
190
- version: 1.19.0
190
+ version: 1.21.0
191
191
  - - "<"
192
192
  - !ruby/object:Gem::Version
193
193
  version: '2.0'
@@ -197,7 +197,7 @@ dependencies:
197
197
  requirements:
198
198
  - - ">="
199
199
  - !ruby/object:Gem::Version
200
- version: 1.19.0
200
+ version: 1.21.0
201
201
  - - "<"
202
202
  - !ruby/object:Gem::Version
203
203
  version: '2.0'
@@ -281,30 +281,36 @@ dependencies:
281
281
  name: ruby-macho
282
282
  requirement: !ruby/object:Gem::Requirement
283
283
  requirements:
284
- - - "~>"
284
+ - - ">="
285
285
  - !ruby/object:Gem::Version
286
- version: '1.4'
286
+ version: '1.0'
287
+ - - "<"
288
+ - !ruby/object:Gem::Version
289
+ version: '3.0'
287
290
  type: :runtime
288
291
  prerelease: false
289
292
  version_requirements: !ruby/object:Gem::Requirement
290
293
  requirements:
291
- - - "~>"
294
+ - - ">="
295
+ - !ruby/object:Gem::Version
296
+ version: '1.0'
297
+ - - "<"
292
298
  - !ruby/object:Gem::Version
293
- version: '1.4'
299
+ version: '3.0'
294
300
  - !ruby/object:Gem::Dependency
295
301
  name: addressable
296
302
  requirement: !ruby/object:Gem::Requirement
297
303
  requirements:
298
304
  - - "~>"
299
305
  - !ruby/object:Gem::Version
300
- version: '2.6'
306
+ version: '2.8'
301
307
  type: :runtime
302
308
  prerelease: false
303
309
  version_requirements: !ruby/object:Gem::Requirement
304
310
  requirements:
305
311
  - - "~>"
306
312
  - !ruby/object:Gem::Version
307
- version: '2.6'
313
+ version: '2.8'
308
314
  - !ruby/object:Gem::Dependency
309
315
  name: bacon
310
316
  requirement: !ruby/object:Gem::Requirement
@@ -325,14 +331,14 @@ dependencies:
325
331
  requirements:
326
332
  - - "~>"
327
333
  - !ruby/object:Gem::Version
328
- version: '1.3'
334
+ version: '2.0'
329
335
  type: :development
330
336
  prerelease: false
331
337
  version_requirements: !ruby/object:Gem::Requirement
332
338
  requirements:
333
339
  - - "~>"
334
340
  - !ruby/object:Gem::Version
335
- version: '1.3'
341
+ version: '2.0'
336
342
  - !ruby/object:Gem::Dependency
337
343
  name: rake
338
344
  requirement: !ruby/object:Gem::Requirement
@@ -458,6 +464,7 @@ files:
458
464
  - lib/cocoapods/installer/post_install_hooks_context.rb
459
465
  - lib/cocoapods/installer/post_integrate_hooks_context.rb
460
466
  - lib/cocoapods/installer/pre_install_hooks_context.rb
467
+ - lib/cocoapods/installer/pre_integrate_hooks_context.rb
461
468
  - lib/cocoapods/installer/project_cache/project_cache.rb
462
469
  - lib/cocoapods/installer/project_cache/project_cache_analysis_result.rb
463
470
  - lib/cocoapods/installer/project_cache/project_cache_analyzer.rb
@@ -531,15 +538,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
531
538
  requirements:
532
539
  - - ">="
533
540
  - !ruby/object:Gem::Version
534
- version: 2.3.3
541
+ version: '2.6'
535
542
  required_rubygems_version: !ruby/object:Gem::Requirement
536
543
  requirements:
537
544
  - - ">="
538
545
  - !ruby/object:Gem::Version
539
546
  version: '0'
540
547
  requirements: []
541
- rubygems_version: 3.0.3
548
+ rubygems_version: 3.0.9
542
549
  signing_key:
543
- specification_version: 3
550
+ specification_version: 4
544
551
  summary: The Cocoa library package manager.
545
552
  test_files: []