cocoapods 1.11.3 → 1.12.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.
- 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
|
-
[](https://github.com/CocoaPods/CocoaPods/actions/workflows/Specs.yml)
|
|
6
6
|
[](https://rubygems.org/gems/cocoapods)
|
|
7
7
|
[](https://codeclimate.com/github/CocoaPods/CocoaPods/maintainability)
|
|
8
8
|
[](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
|
-
| [](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
|
+
| [](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
|
+
| [](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
|
+
| [](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
|
+
| [](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
|
+
| [](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
|
+
| [](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
|