cocoapods 1.11.3 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +74 -2
- data/README.md +7 -8
- data/lib/cocoapods/command/lib/lint.rb +3 -0
- data/lib/cocoapods/command/repo/push.rb +3 -0
- data/lib/cocoapods/command/setup.rb +2 -2
- data/lib/cocoapods/command/spec/lint.rb +3 -0
- data/lib/cocoapods/config.rb +5 -5
- data/lib/cocoapods/executable.rb +1 -1
- data/lib/cocoapods/external_sources/abstract_external_source.rb +1 -1
- data/lib/cocoapods/external_sources/path_source.rb +1 -1
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/acknowledgements.rb +12 -0
- data/lib/cocoapods/generator/copy_resources_script.rb +1 -1
- data/lib/cocoapods/generator/info_plist_file.rb +1 -1
- data/lib/cocoapods/installer/analyzer/analysis_result.rb +3 -3
- data/lib/cocoapods/installer/analyzer/pod_variant.rb +1 -1
- data/lib/cocoapods/installer/analyzer/sandbox_analyzer.rb +6 -6
- data/lib/cocoapods/installer/analyzer.rb +8 -4
- data/lib/cocoapods/installer/base_install_hooks_context.rb +18 -3
- data/lib/cocoapods/installer/installation_options.rb +11 -0
- data/lib/cocoapods/installer/pod_source_downloader.rb +159 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +10 -36
- data/lib/cocoapods/installer/project_cache/project_cache_analyzer.rb +2 -2
- data/lib/cocoapods/installer/project_cache/target_cache_key.rb +1 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +37 -3
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +6 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/project_generator.rb +1 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +36 -1
- data/lib/cocoapods/installer.rb +102 -34
- data/lib/cocoapods/native_target_extension.rb +1 -1
- data/lib/cocoapods/open-uri.rb +1 -1
- data/lib/cocoapods/project.rb +8 -8
- data/lib/cocoapods/resolver/resolver_specification.rb +1 -1
- data/lib/cocoapods/resolver.rb +3 -3
- data/lib/cocoapods/sandbox/file_accessor.rb +1 -1
- data/lib/cocoapods/sandbox/path_list.rb +1 -1
- data/lib/cocoapods/sandbox.rb +48 -12
- data/lib/cocoapods/sources_manager.rb +1 -1
- data/lib/cocoapods/target/build_settings.rb +6 -1
- data/lib/cocoapods/target/pod_target.rb +2 -2
- data/lib/cocoapods/user_interface.rb +2 -2
- data/lib/cocoapods/validator.rb +19 -17
- data/lib/cocoapods/xcode/xcframework/xcframework_slice.rb +12 -6
- data/lib/cocoapods/xcode/xcframework.rb +1 -1
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef9725752e53e158770daed057cf73b9f7cf849e1ef4c663a2256f360fbfd7da
|
4
|
+
data.tar.gz: 6a52819a3e1a7e232a1d1ea14e0cedf6e27ac6c523fd265a9882a4bd54d1a9aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d4a47b0ff16089ad7d81eb95a55672fe2cda75bc9cfe963fe736e17290340a6e6fdd899d36fdde7ae8a75f0e03a25da67f23b52449444e7dd3daebb2391cbdb
|
7
|
+
data.tar.gz: 81c62f774bafafd9e324e41174cc060fdf218bae6de2817b2c952982c9b709fc12589e4662fff1386e66a9a880672797678736e51e98a922f6e1de3bb59e3706
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,78 @@ To install or update CocoaPods see this [guide](https://guides.cocoapods.org/usi
|
|
4
4
|
|
5
5
|
To install release candidates run `[sudo] gem install cocoapods --pre`
|
6
6
|
|
7
|
+
## 1.12.0 (2023-02-27)
|
8
|
+
|
9
|
+
##### Enhancements
|
10
|
+
|
11
|
+
* Add ability to specify the `validation-dir` during `lint`.
|
12
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
13
|
+
[#11773](https://github.com/CocoaPods/CocoaPods/pull/11773)
|
14
|
+
|
15
|
+
* Correctly handle `.docc` documentation in source_files.
|
16
|
+
[haifengkao](https://github.com/haifengkao)
|
17
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
18
|
+
[#11438](https://github.com/CocoaPods/CocoaPods/pull/11438)
|
19
|
+
[#10885](https://github.com/CocoaPods/CocoaPods/issues/10885)
|
20
|
+
|
21
|
+
* Re-use the same path lists for pods that share the same root.
|
22
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
23
|
+
[#11417](https://github.com/CocoaPods/CocoaPods/pull/11417)
|
24
|
+
|
25
|
+
* Integrate `parallelizable` scheme DSL option.
|
26
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
27
|
+
[#11399](https://github.com/CocoaPods/CocoaPods/pull/11399)
|
28
|
+
|
29
|
+
* Use `${DEVELOPMENT_LANGUAGE}` as the default `CFBundleDevelopmentRegion` value in any generated `Info.plist`.
|
30
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
31
|
+
[#10950](https://github.com/CocoaPods/CocoaPods/pull/10950)
|
32
|
+
|
33
|
+
* Fix setting `LD_RUNTIME_SEARCH_PATHS` for aggregate targets that include dynamic xcframeworks.
|
34
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
35
|
+
[#11158](https://github.com/CocoaPods/CocoaPods/pull/11158)
|
36
|
+
|
37
|
+
* Add method for formatting licenses for acknowledgements generation.
|
38
|
+
[Raihaan Shouhell](https://github.com/res0nance)
|
39
|
+
[#10940](https://github.com/CocoaPods/CocoaPods/pull/10940)
|
40
|
+
|
41
|
+
* Add the ability to download pods in parallel
|
42
|
+
[Seth Friedman](https://github.com/sethfri)
|
43
|
+
[#11232](https://github.com/CocoaPods/CocoaPods/pull/11232)
|
44
|
+
|
45
|
+
* Include subprojects in the plugin post-install hook context
|
46
|
+
[Eric Amorde](https://github.com/amorde)
|
47
|
+
[#11224](https://github.com/CocoaPods/CocoaPods/pull/11224)
|
48
|
+
|
49
|
+
* Ensure the order of slices passed to the `install_xcframework` script (in the "Copy XCFrameworks" script build phase) is stable.
|
50
|
+
[Olivier Halligon](https://github.com/AliSoftware)
|
51
|
+
[#11707](https://github.com/CocoaPods/CocoaPods/pull/11707)
|
52
|
+
|
53
|
+
##### Bug Fixes
|
54
|
+
|
55
|
+
* Fix incremental installation when a development pod is deleted.
|
56
|
+
[John Szumski](https://github.com/jszumski)
|
57
|
+
[#11438](https://github.com/CocoaPods/CocoaPods/pull/11681)
|
58
|
+
|
59
|
+
* Clean sandbox when a pod switches from remote to local.
|
60
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
61
|
+
[#11213](https://github.com/CocoaPods/CocoaPods/pull/11213)
|
62
|
+
|
63
|
+
* Run post install hooks when "skip Pods.xcodeproj generation" option is set
|
64
|
+
[Elton Gao](https://github.com/gyfelton)
|
65
|
+
[#11073](https://github.com/CocoaPods/CocoaPods/pull/11073)
|
66
|
+
|
67
|
+
* Change minimal required version of ruby-macho to 2.3.0.
|
68
|
+
[xuzhongping](https://github.com/xuzhongping)
|
69
|
+
[#10390](https://github.com/CocoaPods/CocoaPods/issues/10390)
|
70
|
+
|
71
|
+
* Add .gitignores to the banana and snake fixtures
|
72
|
+
[Seth Friedman](https://github.com/sethfri)
|
73
|
+
[#11235](https://github.com/CocoaPods/CocoaPods/pull/11235)
|
74
|
+
|
75
|
+
* Fix publishing podspecs with watchOS support on Xcode 14
|
76
|
+
[Justin Martin](https://github.com/justinseanmartin)
|
77
|
+
[#11660](https://github.com/CocoaPods/CocoaPods/pull/11660)
|
78
|
+
|
7
79
|
## 1.11.3 (2022-03-16)
|
8
80
|
|
9
81
|
##### Enhancements
|
@@ -7564,7 +7636,7 @@ that can be added to a settings bundle for an iOS application.
|
|
7564
7636
|
You don't need to do anything for this to happen, it should just work.
|
7565
7637
|
|
7566
7638
|
If you're not happy with the default boilerplate text generated for the title, header
|
7567
|
-
and footnotes in the files, it's possible to
|
7639
|
+
and footnotes in the files, it's possible to customize these by overriding the methods
|
7568
7640
|
that generate the text in your `Podfile` like this:
|
7569
7641
|
|
7570
7642
|
```ruby
|
@@ -7575,7 +7647,7 @@ class ::Pod::Generator::Acknowledgements
|
|
7575
7647
|
end
|
7576
7648
|
```
|
7577
7649
|
|
7578
|
-
You can even go one step further and
|
7650
|
+
You can even go one step further and customize the text on a per target basis by
|
7579
7651
|
checking against the target name, like this:
|
7580
7652
|
|
7581
7653
|
```ruby
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
### CocoaPods: The Cocoa dependency manager
|
4
4
|
|
5
|
-
[![Build Status](https://
|
5
|
+
[![Build Status](https://github.com/CocoaPods/CocoaPods/workflows/Specs/badge.svg)](https://github.com/CocoaPods/CocoaPods/actions/workflows/Specs.yml)
|
6
6
|
[![Gem Version](https://img.shields.io/gem/v/cocoapods)](https://rubygems.org/gems/cocoapods)
|
7
7
|
[![Maintainability](https://api.codeclimate.com/v1/badges/8f0fe544baf2ae1acc2b/maintainability)](https://codeclimate.com/github/CocoaPods/CocoaPods/maintainability)
|
8
8
|
[![Test Coverage](https://api.codeclimate.com/v1/badges/8f0fe544baf2ae1acc2b/test_coverage)](https://codeclimate.com/github/CocoaPods/CocoaPods/test_coverage)
|
@@ -72,11 +72,10 @@ CocoaPods is composed of the following projects:
|
|
72
72
|
|
73
73
|
| Status | Project | Description | Info |
|
74
74
|
| :-------- | :------ | :--- | :--- |
|
75
|
-
| [![Build Status](https://
|
76
|
-
| [![Build Status](https://
|
77
|
-
| [![Build Status](https://
|
78
|
-
| [![Build Status](https://
|
79
|
-
| [![Build Status](https://
|
80
|
-
| [![Build Status](https://
|
81
|
-
| [![Build Status](https://img.shields.io/travis/CocoaPods/CocoaPods-app/master.svg?style=flat)](https://travis-ci.org/CocoaPods/CocoaPods-app) | [CocoaPods.app](https://github.com/CocoaPods/CocoaPods-app) | A full-featured and standalone installation of CocoaPods. | [info](https://cocoapods.org/app)
|
75
|
+
| [![Build Status](https://github.com/CocoaPods/CocoaPods/workflows/Specs/badge.svg)](https://github.com/CocoaPods/CocoaPods/actions/workflows/Specs.yml) | [CocoaPods](https://github.com/CocoaPods/CocoaPods) | The CocoaPods command line tool. | [guides](https://guides.cocoapods.org)
|
76
|
+
| [![Build Status](https://github.com/CocoaPods/Core/workflows/Specs/badge.svg)](https://github.com/CocoaPods/Core/actions/workflows/Specs.yml) | [CocoaPods Core](https://github.com/CocoaPods/Core) | Support for working with specifications and podfiles. | [docs](https://guides.cocoapods.org/contributing/components.html)
|
77
|
+
| [![Build Status](https://github.com/CocoaPods/cocoapods-downloader/workflows/Specs/badge.svg)](https://github.com/CocoaPods/cocoapods-downloader/actions/workflows/Specs.yml) |[CocoaPods Downloader](https://github.com/CocoaPods/cocoapods-downloader) | Downloaders for various source types. | [docs](https://www.rubydoc.info/gems/cocoapods-downloader)
|
78
|
+
| [![Build Status](https://github.com/CocoaPods/Xcodeproj/workflows/Specs/badge.svg)](https://github.com/CocoaPods/Xcodeproj/actions/workflows/Specs.yml) | [Xcodeproj](https://github.com/CocoaPods/Xcodeproj) | Create and modify Xcode projects from Ruby. | [docs](https://www.rubydoc.info/gems/xcodeproj)
|
79
|
+
| [![Build Status](https://github.com/CocoaPods/CLAide/workflows/ci/badge.svg)](https://github.com/CocoaPods/CLAide/actions/workflows/ci.yml) | [CLAide](https://github.com/CocoaPods/CLAide) | A small command-line interface framework. | [docs](https://www.rubydoc.info/gems/claide)
|
80
|
+
| [![Build Status](https://github.com/CocoaPods/Molinillo/workflows/test/badge.svg)](https://github.com/CocoaPods/Molinillo/actions/workflows/test.yml) | [Molinillo](https://github.com/CocoaPods/Molinillo) | A powerful generic dependency resolver. | [docs](https://www.rubydoc.info/gems/molinillo)
|
82
81
|
| | [Master Repo ](https://github.com/CocoaPods/Specs) | Master repository of specifications. | [guides](https://guides.cocoapods.org/making/specs-and-specs-repo.html)
|
@@ -38,6 +38,7 @@ module Pod
|
|
38
38
|
['--test-specs=test-spec1,test-spec2,etc', 'List of test specs to run'],
|
39
39
|
['--analyze', 'Validate with the Xcode Static Analysis tool'],
|
40
40
|
['--configuration=CONFIGURATION', 'Build using the given configuration (defaults to Release)'],
|
41
|
+
['--validaton-dir', 'The directory to use for validation. If none is specified a temporary directory will be used.'],
|
41
42
|
].concat(super)
|
42
43
|
end
|
43
44
|
|
@@ -63,6 +64,7 @@ module Pod
|
|
63
64
|
@analyze = argv.flag?('analyze', false)
|
64
65
|
@podspecs_paths = argv.arguments!
|
65
66
|
@configuration = argv.option('configuration', nil)
|
67
|
+
@validation_dir = argv.option('validation-dir', nil)
|
66
68
|
super
|
67
69
|
end
|
68
70
|
|
@@ -93,6 +95,7 @@ module Pod
|
|
93
95
|
validator.include_podspecs = @include_podspecs
|
94
96
|
validator.external_podspecs = @external_podspecs
|
95
97
|
validator.configuration = @configuration
|
98
|
+
validator.validation_dir = @validation_dir
|
96
99
|
validator.validate
|
97
100
|
|
98
101
|
unless @clean
|
@@ -38,6 +38,7 @@ module Pod
|
|
38
38
|
'This takes precedence over the Swift versions specified by the spec or a `.swift-version` file'],
|
39
39
|
['--no-overwrite', 'Disallow pushing that would overwrite an existing spec'],
|
40
40
|
['--update-sources', 'Make sure sources are up-to-date before a push'],
|
41
|
+
['--validaton-dir', 'The directory to use for validation. If none is specified a temporary directory will be used.'],
|
41
42
|
].concat(super)
|
42
43
|
end
|
43
44
|
|
@@ -59,6 +60,7 @@ module Pod
|
|
59
60
|
@skip_import_validation = argv.flag?('skip-import-validation', false)
|
60
61
|
@skip_tests = argv.flag?('skip-tests', false)
|
61
62
|
@allow_overwrite = argv.flag?('overwrite', true)
|
63
|
+
@validation_dir = argv.option('validation-dir', nil)
|
62
64
|
super
|
63
65
|
end
|
64
66
|
|
@@ -144,6 +146,7 @@ module Pod
|
|
144
146
|
validator.swift_version = @swift_version
|
145
147
|
validator.skip_import_validation = @skip_import_validation
|
146
148
|
validator.skip_tests = @skip_tests
|
149
|
+
validator.validation_dir = @validation_dir
|
147
150
|
begin
|
148
151
|
validator.validate
|
149
152
|
rescue => e
|
@@ -3,10 +3,10 @@ require 'fileutils'
|
|
3
3
|
module Pod
|
4
4
|
class Command
|
5
5
|
class Setup < Command
|
6
|
-
self.summary = '
|
6
|
+
self.summary = 'Set up the CocoaPods environment'
|
7
7
|
|
8
8
|
self.description = <<-DESC
|
9
|
-
|
9
|
+
Set up the CocoaPods environment
|
10
10
|
DESC
|
11
11
|
|
12
12
|
def run
|
@@ -37,6 +37,7 @@ module Pod
|
|
37
37
|
['--test-specs=test-spec1,test-spec2,etc', 'List of test specs to run'],
|
38
38
|
['--analyze', 'Validate with the Xcode Static Analysis tool'],
|
39
39
|
['--configuration=CONFIGURATION', 'Build using the given configuration (defaults to Release)'],
|
40
|
+
['--validaton-dir', 'The directory to use for validation. If none is specified a temporary directory will be used.'],
|
40
41
|
].concat(super)
|
41
42
|
end
|
42
43
|
|
@@ -60,6 +61,7 @@ module Pod
|
|
60
61
|
@analyze = argv.flag?('analyze', false)
|
61
62
|
@podspecs_paths = argv.arguments!
|
62
63
|
@configuration = argv.option('configuration', nil)
|
64
|
+
@validation_dir = argv.option('validation-dir', nil)
|
63
65
|
super
|
64
66
|
end
|
65
67
|
|
@@ -84,6 +86,7 @@ module Pod
|
|
84
86
|
validator.test_specs = @test_specs
|
85
87
|
validator.analyze = @analyze
|
86
88
|
validator.configuration = @configuration
|
89
|
+
validator.validation_dir = @validation_dir
|
87
90
|
validator.validate
|
88
91
|
failure_reasons << validator.failure_reason
|
89
92
|
|
data/lib/cocoapods/config.rb
CHANGED
@@ -49,23 +49,23 @@ module Pod
|
|
49
49
|
|
50
50
|
# @!group UI
|
51
51
|
|
52
|
-
# @return [
|
52
|
+
# @return [Boolean] Whether CocoaPods should provide detailed output about the
|
53
53
|
# performed actions.
|
54
54
|
#
|
55
55
|
attr_accessor :verbose
|
56
56
|
alias_method :verbose?, :verbose
|
57
57
|
|
58
|
-
# @return [
|
58
|
+
# @return [Boolean] Whether CocoaPods should produce not output.
|
59
59
|
#
|
60
60
|
attr_accessor :silent
|
61
61
|
alias_method :silent?, :silent
|
62
62
|
|
63
|
-
# @return [
|
63
|
+
# @return [Boolean] Whether CocoaPods is allowed to run as root.
|
64
64
|
#
|
65
65
|
attr_accessor :allow_root
|
66
66
|
alias_method :allow_root?, :allow_root
|
67
67
|
|
68
|
-
# @return [
|
68
|
+
# @return [Boolean] Whether a message should be printed when a new version of
|
69
69
|
# CocoaPods is available.
|
70
70
|
#
|
71
71
|
attr_accessor :new_version_message
|
@@ -75,7 +75,7 @@ module Pod
|
|
75
75
|
|
76
76
|
# @!group Installation
|
77
77
|
|
78
|
-
# @return [
|
78
|
+
# @return [Boolean] Whether the installer should skip the download cache.
|
79
79
|
#
|
80
80
|
attr_accessor :skip_download_cache
|
81
81
|
alias_method :skip_download_cache?, :skip_download_cache
|
data/lib/cocoapods/executable.rb
CHANGED
@@ -36,7 +36,7 @@ module Pod
|
|
36
36
|
# @param [Array<#to_s>] command
|
37
37
|
# The command to send to the binary.
|
38
38
|
#
|
39
|
-
# @param [
|
39
|
+
# @param [Boolean] raise_on_failure
|
40
40
|
# Whether it should raise if the command fails.
|
41
41
|
#
|
42
42
|
# @raise If the executable could not be located.
|
@@ -36,7 +36,7 @@ module Pod
|
|
36
36
|
@can_cache = can_cache
|
37
37
|
end
|
38
38
|
|
39
|
-
# @return [
|
39
|
+
# @return [Boolean] whether an external source source is equal to another
|
40
40
|
# according to the {#name} and to the {#params}.
|
41
41
|
#
|
42
42
|
def ==(other)
|
@@ -84,10 +84,22 @@ module Pod
|
|
84
84
|
elsif license_file = file_accessor(spec).license
|
85
85
|
text = IO.read(license_file)
|
86
86
|
end
|
87
|
+
text = format_license(text)
|
87
88
|
end
|
88
89
|
text
|
89
90
|
end
|
90
91
|
|
92
|
+
# Convenience method for users to format licenses
|
93
|
+
#
|
94
|
+
# @param [String] text
|
95
|
+
# Unformatted license text
|
96
|
+
#
|
97
|
+
# @return [String] Formatted license text
|
98
|
+
#
|
99
|
+
def format_license(text)
|
100
|
+
text
|
101
|
+
end
|
102
|
+
|
91
103
|
protected
|
92
104
|
|
93
105
|
# Returns the file accessor for the given spec.
|
@@ -59,7 +59,7 @@ module Pod
|
|
59
59
|
:tvos => Version.new('9.0'),
|
60
60
|
}
|
61
61
|
|
62
|
-
# @return [
|
62
|
+
# @return [Boolean] Whether the external strings file is supported by the
|
63
63
|
# `ibtool` according to the deployment target of the platform.
|
64
64
|
#
|
65
65
|
def use_external_strings_file?
|
@@ -112,7 +112,7 @@ module Pod
|
|
112
112
|
'CFBundleSignature' => '????',
|
113
113
|
'CFBundleVersion' => '${CURRENT_PROJECT_VERSION}',
|
114
114
|
'NSPrincipalClass' => '',
|
115
|
-
'CFBundleDevelopmentRegion' => '
|
115
|
+
'CFBundleDevelopmentRegion' => '${PODS_DEVELOPMENT_LANGUAGE}',
|
116
116
|
}
|
117
117
|
|
118
118
|
info['CFBundleExecutable'] = '${EXECUTABLE_NAME}' if bundle_package_type != :bndl
|
@@ -59,14 +59,14 @@ module Pod
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
# @return [
|
62
|
+
# @return [Boolean] Whether an installation should be performed or this
|
63
63
|
# CocoaPods project is already up to date.
|
64
64
|
#
|
65
65
|
def needs_install?
|
66
66
|
podfile_needs_install? || sandbox_needs_install?
|
67
67
|
end
|
68
68
|
|
69
|
-
# @return [
|
69
|
+
# @return [Boolean] Whether the podfile has changes respect to the lockfile.
|
70
70
|
#
|
71
71
|
def podfile_needs_install?
|
72
72
|
state = podfile_state
|
@@ -74,7 +74,7 @@ module Pod
|
|
74
74
|
needing_install > 0
|
75
75
|
end
|
76
76
|
|
77
|
-
# @return [
|
77
|
+
# @return [Boolean] Whether the sandbox is in synch with the lockfile.
|
78
78
|
#
|
79
79
|
def sandbox_needs_install?
|
80
80
|
state = sandbox_state
|
@@ -56,7 +56,7 @@ module Pod
|
|
56
56
|
# @note Non library specs are intentionally not included as part of the equality for pod variants since a pod
|
57
57
|
# variant should not be affected by the number of test nor app specs included.
|
58
58
|
#
|
59
|
-
# @return [
|
59
|
+
# @return [Boolean] whether the {PodVariant} is equal to another taking all all their attributes into account
|
60
60
|
#
|
61
61
|
def ==(other)
|
62
62
|
self.class == other.class &&
|
@@ -40,7 +40,7 @@ module Pod
|
|
40
40
|
#
|
41
41
|
attr_reader :specs
|
42
42
|
|
43
|
-
# @return [
|
43
|
+
# @return [Boolean] Whether the installation is performed in update mode.
|
44
44
|
#
|
45
45
|
attr_reader :update_mode
|
46
46
|
|
@@ -51,7 +51,7 @@ module Pod
|
|
51
51
|
# @param [Sandbox] sandbox @see sandbox
|
52
52
|
# @param [Podfile] podfile @see podfile
|
53
53
|
# @param [Array<Specifications>] specs @see specs
|
54
|
-
# @param [
|
54
|
+
# @param [Boolean] update_mode @see update_mode
|
55
55
|
#
|
56
56
|
def initialize(sandbox, podfile, specs, update_mode)
|
57
57
|
@sandbox = sandbox
|
@@ -92,8 +92,8 @@ module Pod
|
|
92
92
|
# @return [Symbol] The state
|
93
93
|
#
|
94
94
|
def pod_state(pod)
|
95
|
-
return :added if pod_added?(pod)
|
96
95
|
return :deleted if pod_deleted?(pod)
|
96
|
+
return :added if pod_added?(pod)
|
97
97
|
return :changed if pod_changed?(pod)
|
98
98
|
:unchanged
|
99
99
|
end
|
@@ -105,7 +105,7 @@ module Pod
|
|
105
105
|
# @param [String] pod
|
106
106
|
# the name of the Pod.
|
107
107
|
#
|
108
|
-
# @return [
|
108
|
+
# @return [Boolean] Whether the Pod is added.
|
109
109
|
#
|
110
110
|
def pod_added?(pod)
|
111
111
|
return true if resolved_pods.include?(pod) && !sandbox_pods.include?(pod)
|
@@ -119,7 +119,7 @@ module Pod
|
|
119
119
|
# @param [String] pod
|
120
120
|
# the name of the Pod.
|
121
121
|
#
|
122
|
-
# @return [
|
122
|
+
# @return [Boolean] Whether the Pod is deleted.
|
123
123
|
#
|
124
124
|
def pod_deleted?(pod)
|
125
125
|
return true if !resolved_pods.include?(pod) && sandbox_pods.include?(pod)
|
@@ -138,7 +138,7 @@ module Pod
|
|
138
138
|
# @param [String] pod
|
139
139
|
# the name of the Pod.
|
140
140
|
#
|
141
|
-
# @return [
|
141
|
+
# @return [Boolean] Whether the Pod is changed.
|
142
142
|
#
|
143
143
|
def pod_changed?(pod)
|
144
144
|
spec = root_spec(pod)
|
@@ -43,7 +43,7 @@ module Pod
|
|
43
43
|
#
|
44
44
|
attr_reader :plugin_sources
|
45
45
|
|
46
|
-
# @return [
|
46
|
+
# @return [Boolean] Whether the analysis has dependencies and thus sources must be configured.
|
47
47
|
#
|
48
48
|
# @note This is used by the `pod lib lint` command to prevent update of specs when not needed.
|
49
49
|
#
|
@@ -84,6 +84,7 @@ module Pod
|
|
84
84
|
@installation_options = podfile.installation_options
|
85
85
|
@podfile_dependency_cache = PodfileDependencyCache.from_podfile(podfile)
|
86
86
|
@sources_manager = sources_manager
|
87
|
+
@path_lists = {}
|
87
88
|
@result = nil
|
88
89
|
end
|
89
90
|
|
@@ -93,7 +94,7 @@ module Pod
|
|
93
94
|
# compute which specification should be installed. The manifest of the
|
94
95
|
# sandbox returns which specifications are installed.
|
95
96
|
#
|
96
|
-
# @param [
|
97
|
+
# @param [Boolean] allow_fetches
|
97
98
|
# whether external sources may be fetched
|
98
99
|
#
|
99
100
|
# @return [AnalysisResult]
|
@@ -193,7 +194,7 @@ module Pod
|
|
193
194
|
|
194
195
|
# @!group Configuration
|
195
196
|
|
196
|
-
# @return [
|
197
|
+
# @return [Boolean] Whether the version of the dependencies which did not
|
197
198
|
# change in the Podfile should be locked.
|
198
199
|
#
|
199
200
|
def update_mode?
|
@@ -830,7 +831,10 @@ module Pod
|
|
830
831
|
def create_file_accessors(specs, platform)
|
831
832
|
name = specs.first.name
|
832
833
|
pod_root = sandbox.pod_dir(name)
|
833
|
-
path_list =
|
834
|
+
path_list = @path_lists.fetch(pod_root) do |root|
|
835
|
+
path_list = Sandbox::PathList.new(root)
|
836
|
+
@path_lists[root] = path_list
|
837
|
+
end
|
834
838
|
specs.map do |spec|
|
835
839
|
Sandbox::FileAccessor.new(path_list, spec.consumer(platform))
|
836
840
|
end
|
@@ -16,6 +16,10 @@ module Pod
|
|
16
16
|
#
|
17
17
|
attr_reader :pods_project
|
18
18
|
|
19
|
+
# @return [Array<Pod::Project>] the subprojects nested under pods_project.
|
20
|
+
#
|
21
|
+
attr_reader :pod_target_subprojects
|
22
|
+
|
19
23
|
# @return [Array<UmbrellaTargetDescription>] The list of
|
20
24
|
# the CocoaPods umbrella targets generated by the installer.
|
21
25
|
#
|
@@ -26,12 +30,14 @@ module Pod
|
|
26
30
|
# @param [Sandbox] sandbox see #sandbox
|
27
31
|
# @param [String] sandbox_root see #sandbox_root
|
28
32
|
# @param [Xcodeproj::Project] pods_project see #pods_project
|
33
|
+
# @param [Array<Xcodeproj::Project>] pod_target_subprojects see #pod_target_subprojects
|
29
34
|
# @param [Array<UmbrellaTargetDescription>] umbrella_targets see #umbrella_targets
|
30
35
|
#
|
31
|
-
def initialize(sandbox, sandbox_root, pods_project, umbrella_targets)
|
36
|
+
def initialize(sandbox, sandbox_root, pods_project, pod_target_subprojects, umbrella_targets)
|
32
37
|
@sandbox = sandbox
|
33
38
|
@sandbox_root = sandbox_root
|
34
39
|
@pods_project = pods_project
|
40
|
+
@pod_target_subprojects = pod_target_subprojects
|
35
41
|
@umbrella_targets = umbrella_targets
|
36
42
|
end
|
37
43
|
|
@@ -43,6 +49,9 @@ module Pod
|
|
43
49
|
# @param [Project] pods_project
|
44
50
|
# The pods project.
|
45
51
|
#
|
52
|
+
# @param [Project] pod_target_subprojects
|
53
|
+
# The subprojects nested under pods_project.
|
54
|
+
#
|
46
55
|
# @param [Array<AggregateTarget>] aggregate_targets
|
47
56
|
# The aggregate targets, which will been presented by an adequate
|
48
57
|
# {UmbrellaTargetDescription} in the generated context.
|
@@ -50,7 +59,7 @@ module Pod
|
|
50
59
|
# @return [HooksContext] Convenience class method to generate the
|
51
60
|
# static context.
|
52
61
|
#
|
53
|
-
def self.generate(sandbox, pods_project, aggregate_targets)
|
62
|
+
def self.generate(sandbox, pods_project, pod_target_subprojects, aggregate_targets)
|
54
63
|
umbrella_targets_descriptions = aggregate_targets.map do |umbrella|
|
55
64
|
user_project = umbrella.user_project
|
56
65
|
user_targets = umbrella.user_targets
|
@@ -61,7 +70,13 @@ module Pod
|
|
61
70
|
UmbrellaTargetDescription.new(user_project, user_targets, specs, platform_name, platform_deployment_target, cocoapods_target_label)
|
62
71
|
end
|
63
72
|
|
64
|
-
new(sandbox, sandbox.root.to_s, pods_project, umbrella_targets_descriptions)
|
73
|
+
new(sandbox, sandbox.root.to_s, pods_project, pod_target_subprojects, umbrella_targets_descriptions)
|
74
|
+
end
|
75
|
+
|
76
|
+
# @return [Array<Pod::Project>] all projects generated during installation
|
77
|
+
#
|
78
|
+
def generated_projects
|
79
|
+
[pods_project] + pod_target_subprojects
|
65
80
|
end
|
66
81
|
|
67
82
|
# Pure data class which describes an umbrella target.
|
@@ -190,6 +190,17 @@ module Pod
|
|
190
190
|
# Whether to skip generating the `Pods.xcodeproj` and perform only dependency resolution and downloading.
|
191
191
|
#
|
192
192
|
option :skip_pods_project_generation, false
|
193
|
+
|
194
|
+
# Whether to download pods in parallel before beginning the installation process
|
195
|
+
#
|
196
|
+
option :parallel_pod_downloads, false
|
197
|
+
|
198
|
+
# The size of the thread pool to use when downloading pods in parallel. Only takes effect when
|
199
|
+
# `parallel_pod_downloads` is `true`.
|
200
|
+
#
|
201
|
+
# Default: 40
|
202
|
+
#
|
203
|
+
option(:parallel_pod_download_thread_pool_size, 40, :boolean => false)
|
193
204
|
end
|
194
205
|
end
|
195
206
|
end
|