cocoapods 1.7.5 → 1.8.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 +4 -4
- data/CHANGELOG.md +175 -11
- data/LICENSE +13 -8
- data/README.md +2 -1
- data/lib/cocoapods/command/init.rb +18 -16
- data/lib/cocoapods/command/install.rb +2 -1
- data/lib/cocoapods/command/lib/create.rb +1 -2
- data/lib/cocoapods/command/lib/lint.rb +12 -11
- data/lib/cocoapods/command/repo/add.rb +2 -2
- data/lib/cocoapods/command/repo/list.rb +7 -5
- data/lib/cocoapods/command/repo/push.rb +15 -12
- data/lib/cocoapods/command/setup.rb +2 -88
- data/lib/cocoapods/command/spec/lint.rb +10 -9
- data/lib/cocoapods/command/update.rb +5 -4
- data/lib/cocoapods/config.rb +9 -8
- data/lib/cocoapods/external_sources/path_source.rb +1 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/embed_frameworks_script.rb +1 -1
- data/lib/cocoapods/generator/info_plist_file.rb +2 -2
- data/lib/cocoapods/installer.rb +32 -12
- data/lib/cocoapods/installer/analyzer.rb +132 -97
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +6 -8
- data/lib/cocoapods/installer/installation_options.rb +4 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +17 -1
- data/lib/cocoapods/installer/podfile_validator.rb +26 -6
- data/lib/cocoapods/installer/project_cache/project_cache_analyzer.rb +37 -27
- data/lib/cocoapods/installer/project_cache/project_cache_version.rb +1 -1
- data/lib/cocoapods/installer/project_cache/project_installation_cache.rb +3 -3
- data/lib/cocoapods/installer/project_cache/project_metadata_cache.rb +12 -6
- data/lib/cocoapods/installer/project_cache/target_cache_key.rb +32 -8
- data/lib/cocoapods/installer/project_cache/target_metadata.rb +6 -2
- data/lib/cocoapods/installer/sandbox_dir_cleaner.rb +12 -0
- data/lib/cocoapods/installer/user_project_integrator/target_integrator/xcconfig_integrator.rb +1 -1
- data/lib/cocoapods/installer/xcode/multi_pods_project_generator.rb +3 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_dependency_installer.rb +2 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/app_host_installer.rb +18 -3
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb +53 -11
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +92 -60
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +66 -50
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +12 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +6 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer_helper.rb +2 -2
- data/lib/cocoapods/installer/xcode/target_validator.rb +30 -14
- data/lib/cocoapods/native_target_extension.rb +11 -5
- data/lib/cocoapods/open-uri.rb +1 -1
- data/lib/cocoapods/project.rb +13 -7
- data/lib/cocoapods/resolver.rb +63 -53
- data/lib/cocoapods/resolver/lazy_specification.rb +14 -5
- data/lib/cocoapods/sandbox.rb +35 -2
- data/lib/cocoapods/sandbox/pod_dir_cleaner.rb +3 -4
- data/lib/cocoapods/sources_manager.rb +72 -43
- data/lib/cocoapods/target.rb +7 -1
- data/lib/cocoapods/target/aggregate_target.rb +13 -8
- data/lib/cocoapods/target/build_settings.rb +33 -10
- data/lib/cocoapods/target/pod_target.rb +114 -30
- data/lib/cocoapods/user_interface/error_report.rb +9 -5
- data/lib/cocoapods/validator.rb +55 -11
- data/lib/cocoapods/version_metadata.rb +14 -1
- metadata +6 -7
- data/lib/cocoapods/command/spec/env_spec.rb +0 -53
@@ -58,6 +58,10 @@ module Pod
|
|
58
58
|
#
|
59
59
|
attr_accessor :app_dependent_targets_by_spec_name
|
60
60
|
|
61
|
+
# @return [Hash{String => (Specification,PodTarget)}] tuples of app specs and pod targets by test spec name.
|
62
|
+
#
|
63
|
+
attr_accessor :test_app_hosts_by_spec_name
|
64
|
+
|
61
65
|
# @return [Hash{String => BuildSettings}] the test spec build settings for this target.
|
62
66
|
#
|
63
67
|
attr_reader :test_spec_build_settings
|
@@ -85,7 +89,6 @@ module Pod
|
|
85
89
|
super(sandbox, host_requires_frameworks, user_build_configurations, archs, platform, :build_type => build_type)
|
86
90
|
raise "Can't initialize a PodTarget without specs!" if specs.nil? || specs.empty?
|
87
91
|
raise "Can't initialize a PodTarget without TargetDefinition!" if target_definitions.nil? || target_definitions.empty?
|
88
|
-
raise "Can't initialize a PodTarget with only abstract TargetDefinitions!" if target_definitions.all?(&:abstract?)
|
89
92
|
raise "Can't initialize a PodTarget with an empty string scope suffix!" if scope_suffix == ''
|
90
93
|
@specs = specs.dup.freeze
|
91
94
|
@target_definitions = target_definitions
|
@@ -99,6 +102,7 @@ module Pod
|
|
99
102
|
@dependent_targets = []
|
100
103
|
@test_dependent_targets_by_spec_name = {}
|
101
104
|
@app_dependent_targets_by_spec_name = {}
|
105
|
+
@test_app_hosts_by_spec_name = {}
|
102
106
|
@build_config_cache = {}
|
103
107
|
@test_spec_build_settings = create_test_build_settings
|
104
108
|
@app_spec_build_settings = create_app_build_settings
|
@@ -114,22 +118,27 @@ module Pod
|
|
114
118
|
def scoped(cache = {})
|
115
119
|
target_definitions.map do |target_definition|
|
116
120
|
cache_key = [specs, target_definition]
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
121
|
+
cache[cache_key] ||= begin
|
122
|
+
target = PodTarget.new(sandbox, host_requires_frameworks, user_build_configurations, archs, platform,
|
123
|
+
specs, [target_definition], file_accessors, target_definition.label,
|
124
|
+
:build_type => build_type)
|
125
|
+
scope_dependent_targets = ->(dependent_targets) do
|
126
|
+
dependent_targets.flat_map do |pod_target|
|
127
|
+
pod_target.scoped(cache).select { |pt| pt.target_definitions == [target_definition] }
|
128
|
+
end
|
125
129
|
end
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
130
|
+
|
131
|
+
target.dependent_targets = scope_dependent_targets[dependent_targets]
|
132
|
+
target.test_dependent_targets_by_spec_name = Hash[test_dependent_targets_by_spec_name.map do |spec_name, test_pod_targets|
|
133
|
+
[spec_name, scope_dependent_targets[test_pod_targets]]
|
134
|
+
end]
|
135
|
+
target.app_dependent_targets_by_spec_name = Hash[app_dependent_targets_by_spec_name.map do |spec_name, app_pod_targets|
|
136
|
+
[spec_name, scope_dependent_targets[app_pod_targets]]
|
137
|
+
end]
|
138
|
+
target.test_app_hosts_by_spec_name = Hash[test_app_hosts_by_spec_name.map do |spec_name, (app_host_spec, app_pod_target)|
|
139
|
+
[spec_name, [app_host_spec, app_pod_target.scoped(cache).find { |pt| pt.target_definitions == [target_definition] }]]
|
140
|
+
end]
|
141
|
+
target
|
133
142
|
end
|
134
143
|
end
|
135
144
|
end
|
@@ -217,6 +226,16 @@ module Pod
|
|
217
226
|
target_definitions.first.podfile
|
218
227
|
end
|
219
228
|
|
229
|
+
# @return [String] the project name derived from the target definitions that integrate this pod. If none is
|
230
|
+
# specified then the name of the pod is used by default.
|
231
|
+
#
|
232
|
+
# @note The name is guaranteed to be the same across all target definitions and is validated by the target
|
233
|
+
# validator during installation.
|
234
|
+
#
|
235
|
+
def project_name
|
236
|
+
target_definitions.map { |td| td.project_name_for_pod(pod_name) }.compact.first || pod_name
|
237
|
+
end
|
238
|
+
|
220
239
|
# @return [String] The name to use for the source code module constructed
|
221
240
|
# for this target, and which will be used to import the module in
|
222
241
|
# implementation source files.
|
@@ -364,7 +383,7 @@ module Pod
|
|
364
383
|
end
|
365
384
|
FrameworkPaths.new(framework_source, dsym_source, bcsymbolmap_paths)
|
366
385
|
end
|
367
|
-
if
|
386
|
+
if file_accessor.spec.library_specification? && should_build? && build_as_dynamic_framework?
|
368
387
|
frameworks << FrameworkPaths.new(build_product_path('${BUILT_PRODUCTS_DIR}'))
|
369
388
|
end
|
370
389
|
hash[file_accessor.spec.name] = frameworks
|
@@ -379,8 +398,13 @@ module Pod
|
|
379
398
|
def resource_paths
|
380
399
|
@resource_paths ||= begin
|
381
400
|
file_accessors.each_with_object({}) do |file_accessor, hash|
|
382
|
-
resource_paths = file_accessor.
|
383
|
-
|
401
|
+
resource_paths = if file_accessor.spec.non_library_specification? && build_as_framework?
|
402
|
+
[]
|
403
|
+
else
|
404
|
+
file_accessor.resources.map do |res|
|
405
|
+
"${PODS_ROOT}/#{res.relative_path_from(sandbox.project_path.dirname)}"
|
406
|
+
end
|
407
|
+
end
|
384
408
|
prefix = Pod::Target::BuildSettings::CONFIGURATION_BUILD_DIR_VARIABLE
|
385
409
|
prefix = configuration_build_dir unless file_accessor.spec.test_specification?
|
386
410
|
resource_bundle_paths = file_accessor.resource_bundles.keys.map { |name| "#{prefix}/#{name.shellescape}.bundle" }
|
@@ -389,6 +413,16 @@ module Pod
|
|
389
413
|
end
|
390
414
|
end
|
391
415
|
|
416
|
+
# @param [Specification] spec The non library spec to calculate the deployment target for.
|
417
|
+
#
|
418
|
+
# @return [String] The deployment target to use for the non library spec. If the spec provides one then that is the
|
419
|
+
# one used otherwise the one for the whole target is used.
|
420
|
+
#
|
421
|
+
def deployment_target_for_non_library_spec(spec)
|
422
|
+
raise ArgumentError, 'Must be a non library spec.' unless spec.non_library_specification?
|
423
|
+
spec.deployment_target(platform.name)
|
424
|
+
end
|
425
|
+
|
392
426
|
# Returns the corresponding native product type to use given the test type.
|
393
427
|
# This is primarily used when creating the native targets in order to produce the correct test bundle target
|
394
428
|
# based on the type of tests included.
|
@@ -402,6 +436,27 @@ module Pod
|
|
402
436
|
case test_type
|
403
437
|
when :unit
|
404
438
|
:unit_test_bundle
|
439
|
+
when :ui
|
440
|
+
:ui_test_bundle
|
441
|
+
else
|
442
|
+
raise ArgumentError, "Unknown test type `#{test_type}`."
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
# Returns the label to use for the given test type.
|
447
|
+
# This is used to generate native target names for test specs.
|
448
|
+
#
|
449
|
+
# @param [Symbol] test_type
|
450
|
+
# The test type to map to provided by the test specification DSL.
|
451
|
+
#
|
452
|
+
# @return [String] The native product type to use.
|
453
|
+
#
|
454
|
+
def label_for_test_type(test_type)
|
455
|
+
case test_type
|
456
|
+
when :unit
|
457
|
+
'Unit'
|
458
|
+
when :ui
|
459
|
+
'UI'
|
405
460
|
else
|
406
461
|
raise ArgumentError, "Unknown test type `#{test_type}`."
|
407
462
|
end
|
@@ -439,6 +494,12 @@ module Pod
|
|
439
494
|
support_files_dir + "#{label}-prefix.pch"
|
440
495
|
end
|
441
496
|
|
497
|
+
# @return [Hash] the additional entries to add to the generated Info.plist
|
498
|
+
#
|
499
|
+
def info_plist_entries
|
500
|
+
root_spec.info_plist
|
501
|
+
end
|
502
|
+
|
442
503
|
# @param [String] bundle_name
|
443
504
|
# The name of the bundle product, which is given by the +spec+.
|
444
505
|
#
|
@@ -464,7 +525,7 @@ module Pod
|
|
464
525
|
# @return [String] The derived name of the test target.
|
465
526
|
#
|
466
527
|
def test_target_label(test_spec)
|
467
|
-
"#{label}-#{test_spec.test_type
|
528
|
+
"#{label}-#{label_for_test_type(test_spec.test_type)}-#{subspec_label(test_spec)}"
|
468
529
|
end
|
469
530
|
|
470
531
|
# @param [Specification] app_spec
|
@@ -476,6 +537,38 @@ module Pod
|
|
476
537
|
"#{label}-#{subspec_label(app_spec)}"
|
477
538
|
end
|
478
539
|
|
540
|
+
# @param [Specification] test_spec
|
541
|
+
# the test spec to use for producing the app host target label.
|
542
|
+
#
|
543
|
+
# @return [(String,String)] a tuple, where the first item is the PodTarget#label of the pod target that defines the
|
544
|
+
# app host, and the second item is the target name of the app host
|
545
|
+
#
|
546
|
+
def app_host_target_label(test_spec)
|
547
|
+
app_spec, app_target = test_app_hosts_by_spec_name[test_spec.name]
|
548
|
+
|
549
|
+
if app_spec
|
550
|
+
[app_target.name, app_target.app_target_label(app_spec)]
|
551
|
+
elsif test_spec.consumer(platform).requires_app_host?
|
552
|
+
[name, "AppHost-#{label}-#{label_for_test_type(test_spec.test_type)}-Tests"]
|
553
|
+
end
|
554
|
+
end
|
555
|
+
|
556
|
+
# @param [Specification] spec
|
557
|
+
# the spec to return app host dependencies for
|
558
|
+
#
|
559
|
+
# @return [Array<PodTarget>] the app host dependent targets for the given spec.
|
560
|
+
#
|
561
|
+
def app_host_dependent_targets_for_spec(spec)
|
562
|
+
return [] unless spec.test_specification? && spec.consumer(platform).test_type == :unit
|
563
|
+
app_host_info = test_app_hosts_by_spec_name[spec.name]
|
564
|
+
if app_host_info.nil?
|
565
|
+
[]
|
566
|
+
else
|
567
|
+
app_spec, app_target = *app_host_info
|
568
|
+
app_target.dependent_targets_for_app_spec(app_spec)
|
569
|
+
end
|
570
|
+
end
|
571
|
+
|
479
572
|
def non_library_spec_label(spec)
|
480
573
|
case spec.spec_type
|
481
574
|
when :test then test_target_label(spec)
|
@@ -677,7 +770,7 @@ module Pod
|
|
677
770
|
whitelists.first
|
678
771
|
else
|
679
772
|
UI.warn "The pod `#{pod_name}` is linked to different targets " \
|
680
|
-
"(#{target_definitions.map { |td| "`#{td.
|
773
|
+
"(#{target_definitions.map { |td| "`#{td.name}`" }.to_sentence}), which contain different " \
|
681
774
|
'settings to inhibit warnings. CocoaPods does not currently ' \
|
682
775
|
'support different settings and will fall back to your preference ' \
|
683
776
|
'set in the root target definition.'
|
@@ -774,15 +867,6 @@ module Pod
|
|
774
867
|
|
775
868
|
private
|
776
869
|
|
777
|
-
def scope_dependent_pod_targets(cache, dependent_targets, target_definitions)
|
778
|
-
Hash[dependent_targets.map do |spec_name, pod_targets|
|
779
|
-
scoped_pod_targets = pod_targets.flat_map do |pod_target|
|
780
|
-
pod_target.scoped(cache).select { |pt| pt.target_definitions == target_definitions }
|
781
|
-
end
|
782
|
-
[spec_name, scoped_pod_targets]
|
783
|
-
end]
|
784
|
-
end
|
785
|
-
|
786
870
|
def create_build_settings
|
787
871
|
BuildSettings::PodTargetSettings.new(self)
|
788
872
|
end
|
@@ -171,12 +171,16 @@ EOS
|
|
171
171
|
|
172
172
|
def repo_information
|
173
173
|
Config.instance.sources_manager.all.map do |source|
|
174
|
-
next unless source.type == 'file system'
|
175
174
|
repo = source.repo
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
175
|
+
if source.is_a?(Pod::CDNSource)
|
176
|
+
"#{repo.basename} - CDN - #{source.url}"
|
177
|
+
elsif source.git?
|
178
|
+
Dir.chdir(repo) do
|
179
|
+
sha = `git rev-parse HEAD 2>&1`.strip
|
180
|
+
"#{repo.basename} - git - #{source.url} @ #{sha}"
|
181
|
+
end
|
182
|
+
else
|
183
|
+
"#{repo.basename} - #{source.type}"
|
180
184
|
end
|
181
185
|
end
|
182
186
|
end
|
data/lib/cocoapods/validator.rb
CHANGED
@@ -35,7 +35,7 @@ module Pod
|
|
35
35
|
# @param [Array<String>] source_urls
|
36
36
|
# the Source URLs to use in creating a {Podfile}.
|
37
37
|
#
|
38
|
-
# @param
|
38
|
+
# @param [Array<String>] platforms
|
39
39
|
# the platforms to lint.
|
40
40
|
#
|
41
41
|
def initialize(spec_or_path, source_urls, platforms = [])
|
@@ -239,6 +239,10 @@ module Pod
|
|
239
239
|
#
|
240
240
|
attr_accessor :skip_tests
|
241
241
|
|
242
|
+
# @return [Bool] Whether the validator should run Xcode Static Analysis.
|
243
|
+
#
|
244
|
+
attr_accessor :analyze
|
245
|
+
|
242
246
|
# @return [Bool] Whether frameworks should be used for the installation.
|
243
247
|
#
|
244
248
|
attr_accessor :use_frameworks
|
@@ -411,13 +415,18 @@ module Pod
|
|
411
415
|
end
|
412
416
|
end
|
413
417
|
|
418
|
+
# @return [Consumer] the consumer for the current platform being validated
|
419
|
+
#
|
414
420
|
attr_accessor :consumer
|
421
|
+
|
422
|
+
# @return [String, Nil] the name of the current subspec being validated, or nil if none
|
423
|
+
#
|
415
424
|
attr_accessor :subspec_name
|
416
425
|
|
417
426
|
# Performs validation of a URL
|
418
427
|
#
|
419
|
-
def validate_url(url)
|
420
|
-
resp = Pod::HTTP.validate_url(url)
|
428
|
+
def validate_url(url, user_agent = nil)
|
429
|
+
resp = Pod::HTTP.validate_url(url, user_agent)
|
421
430
|
|
422
431
|
if !resp
|
423
432
|
warning('url', "There was a problem validating the URL #{url}.", true)
|
@@ -450,7 +459,7 @@ module Pod
|
|
450
459
|
# Performs validations related to the `social_media_url` attribute.
|
451
460
|
#
|
452
461
|
def validate_social_media_url(spec)
|
453
|
-
validate_url(spec.social_media_url) if spec.social_media_url
|
462
|
+
validate_url(spec.social_media_url, 'CocoaPods') if spec.social_media_url
|
454
463
|
end
|
455
464
|
|
456
465
|
# Performs validations related to the `documentation_url` attribute.
|
@@ -527,10 +536,14 @@ module Pod
|
|
527
536
|
end
|
528
537
|
|
529
538
|
def tear_down_validation_environment
|
530
|
-
|
539
|
+
clean! unless no_clean
|
531
540
|
Config.instance = @original_config
|
532
541
|
end
|
533
542
|
|
543
|
+
def clean!
|
544
|
+
validation_dir.rmtree
|
545
|
+
end
|
546
|
+
|
534
547
|
def deployment_target
|
535
548
|
deployment_target = spec.subspec_by_name(subspec_name).deployment_target(consumer.platform_name)
|
536
549
|
if consumer.platform_name == :ios && use_frameworks
|
@@ -591,11 +604,15 @@ module Pod
|
|
591
604
|
perform_post_install_actions).each { |m| @installer.send(m) }
|
592
605
|
|
593
606
|
deployment_target = spec.subspec_by_name(subspec_name).deployment_target(consumer.platform_name)
|
594
|
-
configure_pod_targets(@installer.
|
607
|
+
configure_pod_targets(@installer.target_installation_results)
|
608
|
+
validate_dynamic_framework_support(@installer.aggregate_targets, deployment_target)
|
595
609
|
@installer.pods_project.save
|
596
610
|
end
|
597
611
|
|
598
|
-
|
612
|
+
# @param [Array<Hash{String, TargetInstallationResult}>] target_installation_results
|
613
|
+
# The installation results to configure
|
614
|
+
#
|
615
|
+
def configure_pod_targets(target_installation_results)
|
599
616
|
target_installation_results.first.values.each do |pod_target_installation_result|
|
600
617
|
pod_target = pod_target_installation_result.target
|
601
618
|
native_target = pod_target_installation_result.native_target
|
@@ -626,9 +643,21 @@ module Pod
|
|
626
643
|
end
|
627
644
|
end
|
628
645
|
end
|
629
|
-
|
630
|
-
|
631
|
-
|
646
|
+
end
|
647
|
+
|
648
|
+
# Produces an error of dynamic frameworks were requested but are not supported by the deployment target
|
649
|
+
#
|
650
|
+
# @param [Array<AggregateTarget>] aggregate_targets
|
651
|
+
# The aggregate targets installed by the installer
|
652
|
+
#
|
653
|
+
# @param [String,Version] deployment_target
|
654
|
+
# The deployment target of the installation
|
655
|
+
#
|
656
|
+
def validate_dynamic_framework_support(aggregate_targets, deployment_target)
|
657
|
+
return unless consumer.platform_name == :ios
|
658
|
+
return unless deployment_target.nil? || Version.new(deployment_target).major < 8
|
659
|
+
aggregate_targets.each do |target|
|
660
|
+
if target.pod_targets.any?(&:uses_swift?)
|
632
661
|
uses_xctest = target.spec_consumers.any? { |c| (c.frameworks + c.weak_frameworks).include? 'XCTest' }
|
633
662
|
error('swift', 'Swift support uses dynamic frameworks and is therefore only supported on iOS > 8.') unless uses_xctest
|
634
663
|
end
|
@@ -669,7 +698,18 @@ module Pod
|
|
669
698
|
if scheme.nil?
|
670
699
|
UI.warn "Skipping compilation with `xcodebuild` because target contains no sources.\n".yellow
|
671
700
|
else
|
672
|
-
|
701
|
+
if analyze
|
702
|
+
output = xcodebuild('analyze', scheme, 'Release')
|
703
|
+
find_output = Executable.execute_command('find', [validation_dir, '-name', '*.html'], false)
|
704
|
+
if find_output != ''
|
705
|
+
message = 'Static Analysis failed.'
|
706
|
+
message += ' You can use `--verbose` for more information.' unless config.verbose?
|
707
|
+
message += ' You can use `--no-clean` to save a reproducible buid environment.' unless no_clean
|
708
|
+
error('build_pod', message)
|
709
|
+
end
|
710
|
+
else
|
711
|
+
output = xcodebuild('build', scheme, 'Release')
|
712
|
+
end
|
673
713
|
parsed_output = parse_xcodebuild_output(output)
|
674
714
|
translate_output_to_linter_messages(parsed_output)
|
675
715
|
end
|
@@ -1007,6 +1047,10 @@ module Pod
|
|
1007
1047
|
command += Fourflusher::SimControl.new.destination(:oldest, 'tvOS', deployment_target)
|
1008
1048
|
end
|
1009
1049
|
|
1050
|
+
if analyze
|
1051
|
+
command += %w(CLANG_ANALYZER_OUTPUT=html CLANG_ANALYZER_OUTPUT_DIR=analyzer)
|
1052
|
+
end
|
1053
|
+
|
1010
1054
|
begin
|
1011
1055
|
_xcodebuild(command, true)
|
1012
1056
|
rescue => e
|
@@ -7,7 +7,20 @@ module Pod
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def self.project_cache_version
|
10
|
-
|
10
|
+
[
|
11
|
+
gem_version,
|
12
|
+
cocoapods_sha,
|
13
|
+
'project-cache',
|
14
|
+
CACHE_VERSION,
|
15
|
+
].compact.join('.')
|
11
16
|
end
|
17
|
+
|
18
|
+
def self.cocoapods_sha
|
19
|
+
return unless gemspec = Gem.loaded_specs['cocoapods']
|
20
|
+
return unless source = gemspec.source
|
21
|
+
return unless source.respond_to?(:revision)
|
22
|
+
source.revision
|
23
|
+
end
|
24
|
+
private_class_method :cocoapods_sha
|
12
25
|
end
|
13
26
|
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.
|
4
|
+
version: 1.8.0.beta.1
|
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: 2019-
|
14
|
+
date: 2019-08-05 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.
|
22
|
+
version: 1.8.0.beta.1
|
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.
|
29
|
+
version: 1.8.0.beta.1
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: claide
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,7 +207,7 @@ dependencies:
|
|
207
207
|
requirements:
|
208
208
|
- - ">="
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version: 1.
|
210
|
+
version: 1.11.1
|
211
211
|
- - "<"
|
212
212
|
- !ruby/object:Gem::Version
|
213
213
|
version: '2.0'
|
@@ -217,7 +217,7 @@ dependencies:
|
|
217
217
|
requirements:
|
218
218
|
- - ">="
|
219
219
|
- !ruby/object:Gem::Version
|
220
|
-
version: 1.
|
220
|
+
version: 1.11.1
|
221
221
|
- - "<"
|
222
222
|
- !ruby/object:Gem::Version
|
223
223
|
version: '2.0'
|
@@ -430,7 +430,6 @@ files:
|
|
430
430
|
- lib/cocoapods/command/spec/cat.rb
|
431
431
|
- lib/cocoapods/command/spec/create.rb
|
432
432
|
- lib/cocoapods/command/spec/edit.rb
|
433
|
-
- lib/cocoapods/command/spec/env_spec.rb
|
434
433
|
- lib/cocoapods/command/spec/lint.rb
|
435
434
|
- lib/cocoapods/command/spec/which.rb
|
436
435
|
- lib/cocoapods/command/update.rb
|