cocoapods 1.7.5 → 1.8.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -34,9 +34,9 @@ module Pod
|
|
34
34
|
unless @name && @url
|
35
35
|
help! 'Adding a repo needs a `NAME` and a `URL`.'
|
36
36
|
end
|
37
|
-
if @name == '
|
37
|
+
if @name == 'trunk'
|
38
38
|
raise Informative,
|
39
|
-
|
39
|
+
"Repo name `trunk` is reserved for CocoaPods' main spec repo accessed via CDN."
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -19,10 +19,10 @@ module Pod
|
|
19
19
|
|
20
20
|
# @output Examples:
|
21
21
|
#
|
22
|
-
#
|
23
|
-
# - type:
|
24
|
-
# - URL: https://
|
25
|
-
# - path: /Users/lascorbe/.cocoapods/repos/
|
22
|
+
# trunk
|
23
|
+
# - type: CDN
|
24
|
+
# - URL: https://cdn.cocoapods.org/
|
25
|
+
# - path: /Users/lascorbe/.cocoapods/repos/trunk
|
26
26
|
#
|
27
27
|
# test
|
28
28
|
# - type: local copy
|
@@ -45,7 +45,9 @@ module Pod
|
|
45
45
|
# @return [void]
|
46
46
|
#
|
47
47
|
def print_source(source)
|
48
|
-
if source.
|
48
|
+
if source.is_a?(Pod::CDNSource)
|
49
|
+
UI.puts '- Type: CDN'
|
50
|
+
elsif source.git?
|
49
51
|
branch_name, = Executable.capture_command('git', %w(name-rev --name-only HEAD), :capture => :out, :chdir => source.repo)
|
50
52
|
branch_name.strip!
|
51
53
|
branch_name = 'unknown' if branch_name.empty?
|
@@ -25,19 +25,18 @@ module Pod
|
|
25
25
|
['--allow-warnings', 'Allows pushing even if there are warnings'],
|
26
26
|
['--use-libraries', 'Linter uses static libraries to install the spec'],
|
27
27
|
['--use-modular-headers', 'Lint uses modular headers during installation'],
|
28
|
-
[
|
29
|
-
'(defaults to all available repos). '
|
30
|
-
'Multiple sources must be comma-delimited.'],
|
28
|
+
["--sources=#{Pod::TrunkSource::TRUNK_REPO_URL}", 'The sources from which to pull dependent pods ' \
|
29
|
+
'(defaults to all available repos). Multiple sources must be comma-delimited'],
|
31
30
|
['--local-only', 'Does not perform the step of pushing REPO to its remote'],
|
32
31
|
['--no-private', 'Lint includes checks that apply only to public repos'],
|
33
32
|
['--skip-import-validation', 'Lint skips validating that the pod can be imported'],
|
34
33
|
['--skip-tests', 'Lint skips building and running tests during validation'],
|
35
|
-
['--commit-message="Fix bug in pod"', 'Add custom commit message. ' \
|
36
|
-
|
37
|
-
['--use-json', '
|
38
|
-
['--swift-version=VERSION', 'The SWIFT_VERSION that should be used when linting the spec. ' \
|
39
|
-
'This takes precedence over the Swift versions specified by the spec or a `.swift-version` file
|
40
|
-
['--no-overwrite', 'Disallow pushing that would overwrite an existing spec
|
34
|
+
['--commit-message="Fix bug in pod"', 'Add custom commit message. Opens default editor if no commit ' \
|
35
|
+
'message is specified'],
|
36
|
+
['--use-json', 'Convert the podspec to JSON before pushing it to the repo'],
|
37
|
+
['--swift-version=VERSION', 'The `SWIFT_VERSION` that should be used when linting the spec. ' \
|
38
|
+
'This takes precedence over the Swift versions specified by the spec or a `.swift-version` file'],
|
39
|
+
['--no-overwrite', 'Disallow pushing that would overwrite an existing spec'],
|
41
40
|
].concat(super)
|
42
41
|
end
|
43
42
|
|
@@ -73,7 +72,7 @@ module Pod
|
|
73
72
|
|
74
73
|
def run
|
75
74
|
open_editor if @commit_message && @message.nil?
|
76
|
-
|
75
|
+
check_if_push_allowed
|
77
76
|
validate_podspec_files
|
78
77
|
check_repo_status
|
79
78
|
update_repo
|
@@ -106,7 +105,11 @@ module Pod
|
|
106
105
|
# Temporary check to ensure that users do not push accidentally private
|
107
106
|
# specs to the master repo.
|
108
107
|
#
|
109
|
-
def
|
108
|
+
def check_if_push_allowed
|
109
|
+
if @source.is_a?(CDNSource)
|
110
|
+
raise Informative, 'Cannot push to a CDN source, as it is read-only.'
|
111
|
+
end
|
112
|
+
|
110
113
|
remotes, = Executable.capture_command('git', %w(remote --verbose), :capture => :merge, :chdir => repo_dir)
|
111
114
|
master_repo_urls = [
|
112
115
|
'git@github.com:CocoaPods/Specs.git',
|
@@ -227,7 +230,7 @@ module Pod
|
|
227
230
|
#
|
228
231
|
def push_repo
|
229
232
|
UI.puts "\nPushing the `#{@repo}' repo\n".yellow
|
230
|
-
repo_git('push', 'origin', '
|
233
|
+
repo_git('push', 'origin', 'HEAD')
|
231
234
|
end
|
232
235
|
|
233
236
|
#---------------------------------------------------------------------#
|
@@ -6,97 +6,11 @@ module Pod
|
|
6
6
|
self.summary = 'Setup the CocoaPods environment'
|
7
7
|
|
8
8
|
self.description = <<-DESC
|
9
|
-
|
10
|
-
This is where it will create a clone of the public `master` spec-repo from:
|
11
|
-
|
12
|
-
https://github.com/CocoaPods/Specs
|
13
|
-
|
14
|
-
If the clone already exists, it will ensure that it is up-to-date.
|
9
|
+
Setup the CocoaPods environment
|
15
10
|
DESC
|
16
11
|
|
17
|
-
extend Executable
|
18
|
-
executable :git
|
19
|
-
|
20
12
|
def run
|
21
|
-
|
22
|
-
if master_repo_dir.exist?
|
23
|
-
set_master_repo_url
|
24
|
-
set_master_repo_branch
|
25
|
-
update_master_repo
|
26
|
-
else
|
27
|
-
add_master_repo
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
UI.puts 'Setup completed'.green
|
32
|
-
end
|
33
|
-
|
34
|
-
#--------------------------------------#
|
35
|
-
|
36
|
-
# @!group Setup steps
|
37
|
-
|
38
|
-
# Sets the url of the master repo according to whether it is push.
|
39
|
-
#
|
40
|
-
# @return [void]
|
41
|
-
#
|
42
|
-
def set_master_repo_url
|
43
|
-
Dir.chdir(master_repo_dir) do
|
44
|
-
git('remote', 'set-url', 'origin', url)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# Adds the master repo from the remote.
|
49
|
-
#
|
50
|
-
# @return [void]
|
51
|
-
#
|
52
|
-
def add_master_repo
|
53
|
-
cmd = ['master', url, 'master', '--progress']
|
54
|
-
Repo::Add.parse(cmd).run
|
55
|
-
end
|
56
|
-
|
57
|
-
# Updates the master repo against the remote.
|
58
|
-
#
|
59
|
-
# @return [void]
|
60
|
-
#
|
61
|
-
def update_master_repo
|
62
|
-
show_output = !config.silent?
|
63
|
-
config.sources_manager.update('master', show_output)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Sets the repo to the master branch.
|
67
|
-
#
|
68
|
-
# @note This is not needed anymore as it was used for CocoaPods 0.6
|
69
|
-
# release candidates.
|
70
|
-
#
|
71
|
-
# @return [void]
|
72
|
-
#
|
73
|
-
def set_master_repo_branch
|
74
|
-
Dir.chdir(master_repo_dir) do
|
75
|
-
git %w(checkout master)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
#--------------------------------------#
|
80
|
-
|
81
|
-
# @!group Private helpers
|
82
|
-
|
83
|
-
# @return [String] the url to use according to whether push mode should
|
84
|
-
# be enabled.
|
85
|
-
#
|
86
|
-
def url
|
87
|
-
self.class.read_only_url
|
88
|
-
end
|
89
|
-
|
90
|
-
# @return [String] the read only url of the master repo.
|
91
|
-
#
|
92
|
-
def self.read_only_url
|
93
|
-
'https://github.com/CocoaPods/Specs.git'
|
94
|
-
end
|
95
|
-
|
96
|
-
# @return [Pathname] the directory of the master repo.
|
97
|
-
#
|
98
|
-
def master_repo_dir
|
99
|
-
config.sources_manager.master_repo_dir
|
13
|
+
# Right now, no setup is needed
|
100
14
|
end
|
101
15
|
end
|
102
16
|
end
|
@@ -24,17 +24,16 @@ module Pod
|
|
24
24
|
['--fail-fast', 'Lint stops on the first failing platform or subspec'],
|
25
25
|
['--use-libraries', 'Lint uses static libraries to install the spec'],
|
26
26
|
['--use-modular-headers', 'Lint uses modular headers during installation'],
|
27
|
-
[
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
'(defaults to all platforms supported by the podspec).' \
|
32
|
-
'Multiple platforms must be comma-delimited'],
|
27
|
+
["--sources=#{Pod::TrunkSource::TRUNK_REPO_URL}", 'The sources from which to pull dependent pods ' \
|
28
|
+
"(defaults to #{Pod::TrunkSource::TRUNK_REPO_URL}). Multiple sources must be comma-delimited"],
|
29
|
+
['--platforms=ios,macos', 'Lint against specific platforms (defaults to all platforms supported by the ' \
|
30
|
+
'podspec). Multiple platforms must be comma-delimited'],
|
33
31
|
['--private', 'Lint skips checks that apply only to public specs'],
|
34
|
-
['--swift-version=VERSION', 'The SWIFT_VERSION that should be used to lint the spec. ' \
|
35
|
-
'This takes precedence over the Swift versions specified by the spec or a `.swift-version` file
|
32
|
+
['--swift-version=VERSION', 'The `SWIFT_VERSION` that should be used to lint the spec. ' \
|
33
|
+
'This takes precedence over the Swift versions specified by the spec or a `.swift-version` file'],
|
36
34
|
['--skip-import-validation', 'Lint skips validating that the pod can be imported'],
|
37
35
|
['--skip-tests', 'Lint skips building and running tests during validation'],
|
36
|
+
['--analyze', 'Validate with the Xcode Static Analysis tool'],
|
38
37
|
].concat(super)
|
39
38
|
end
|
40
39
|
|
@@ -47,12 +46,13 @@ module Pod
|
|
47
46
|
@only_subspec = argv.option('subspec')
|
48
47
|
@use_frameworks = !argv.flag?('use-libraries')
|
49
48
|
@use_modular_headers = argv.flag?('use-modular-headers')
|
50
|
-
@source_urls = argv.option('sources',
|
49
|
+
@source_urls = argv.option('sources', Pod::TrunkSource::TRUNK_REPO_URL).split(',')
|
51
50
|
@platforms = argv.option('platforms', '').split(',')
|
52
51
|
@private = argv.flag?('private', false)
|
53
52
|
@swift_version = argv.option('swift-version', nil)
|
54
53
|
@skip_import_validation = argv.flag?('skip-import-validation', false)
|
55
54
|
@skip_tests = argv.flag?('skip-tests', false)
|
55
|
+
@analyze = argv.flag?('analyze', false)
|
56
56
|
@podspecs_paths = argv.arguments!
|
57
57
|
super
|
58
58
|
end
|
@@ -74,6 +74,7 @@ module Pod
|
|
74
74
|
validator.swift_version = @swift_version
|
75
75
|
validator.skip_import_validation = @skip_import_validation
|
76
76
|
validator.skip_tests = @skip_tests
|
77
|
+
validator.analyze = @analyze
|
77
78
|
validator.validate
|
78
79
|
failure_reasons << validator.failure_reason
|
79
80
|
|
@@ -21,10 +21,11 @@ module Pod
|
|
21
21
|
|
22
22
|
def self.options
|
23
23
|
[
|
24
|
-
[
|
25
|
-
'Multiple sources must be comma-delimited
|
26
|
-
['--exclude-pods=podName', 'Pods to exclude during update. Multiple pods must be comma-delimited
|
27
|
-
['--clean-install', 'Ignore the contents of the project cache and force a full pod installation. This only
|
24
|
+
["--sources=#{Pod::TrunkSource::TRUNK_REPO_URL}", 'The sources from which to update dependent pods. ' \
|
25
|
+
'Multiple sources must be comma-delimited'],
|
26
|
+
['--exclude-pods=podName', 'Pods to exclude during update. Multiple pods must be comma-delimited'],
|
27
|
+
['--clean-install', 'Ignore the contents of the project cache and force a full pod installation. This only ' \
|
28
|
+
'applies to projects that have enabled incremental installation'],
|
28
29
|
].concat(super)
|
29
30
|
end
|
30
31
|
|
data/lib/cocoapods/config.rb
CHANGED
@@ -140,6 +140,8 @@ module Pod
|
|
140
140
|
|
141
141
|
attr_writer :repos_dir
|
142
142
|
|
143
|
+
# @return [Source::Manager] the source manager for the spec repos in `repos_dir`
|
144
|
+
#
|
143
145
|
def sources_manager
|
144
146
|
return @sources_manager if @sources_manager && @sources_manager.repos_dir == repos_dir
|
145
147
|
@sources_manager = Source::Manager.new(repos_dir)
|
@@ -155,13 +157,13 @@ module Pod
|
|
155
157
|
# Podfile is located.
|
156
158
|
#
|
157
159
|
def installation_root
|
158
|
-
|
159
|
-
|
160
|
-
|
160
|
+
@installation_root ||= begin
|
161
|
+
current_dir = Pathname.new(ActiveSupport::Multibyte::Unicode.normalize(Dir.pwd))
|
162
|
+
current_path = current_dir
|
161
163
|
until current_path.root?
|
162
164
|
if podfile_path_in_dir(current_path)
|
163
|
-
|
164
|
-
unless current_path ==
|
165
|
+
installation_root = current_path
|
166
|
+
unless current_path == current_dir
|
165
167
|
UI.puts("[in #{current_path}]")
|
166
168
|
end
|
167
169
|
break
|
@@ -169,9 +171,8 @@ module Pod
|
|
169
171
|
current_path = current_path.parent
|
170
172
|
end
|
171
173
|
end
|
172
|
-
|
174
|
+
installation_root || current_dir
|
173
175
|
end
|
174
|
-
@installation_root
|
175
176
|
end
|
176
177
|
|
177
178
|
attr_writer :installation_root
|
@@ -276,7 +277,7 @@ module Pod
|
|
276
277
|
def configure_with(values_by_key)
|
277
278
|
return unless values_by_key
|
278
279
|
values_by_key.each do |key, value|
|
279
|
-
if key == :cache_root
|
280
|
+
if key.to_sym == :cache_root
|
280
281
|
value = Pathname.new(value).expand_path
|
281
282
|
end
|
282
283
|
instance_variable_set("@#{key}", value)
|
@@ -8,7 +8,7 @@ module Pod
|
|
8
8
|
#
|
9
9
|
def fetch(sandbox)
|
10
10
|
title = "Fetching podspec for `#{name}` #{description}"
|
11
|
-
UI.
|
11
|
+
UI.section(title, '-> ') do
|
12
12
|
podspec = podspec_path
|
13
13
|
unless podspec.exist?
|
14
14
|
raise Informative, "No podspec found for `#{name}` in " \
|
@@ -205,7 +205,7 @@ module Pod
|
|
205
205
|
}
|
206
206
|
|
207
207
|
SH
|
208
|
-
script << "\n" unless frameworks_by_config.
|
208
|
+
script << "\n" unless frameworks_by_config.each_value.all?(&:empty?)
|
209
209
|
frameworks_by_config.each do |config, frameworks_with_dsyms|
|
210
210
|
next if frameworks_with_dsyms.empty?
|
211
211
|
script << %(if [[ "$CONFIGURATION" == "#{config}" ]]; then\n)
|
@@ -5,7 +5,7 @@ module Pod
|
|
5
5
|
# framework. It states public attributes.
|
6
6
|
#
|
7
7
|
class InfoPlistFile
|
8
|
-
# @return [
|
8
|
+
# @return [String] version The version to use for when generating this Info.plist file.
|
9
9
|
#
|
10
10
|
attr_reader :version
|
11
11
|
|
@@ -24,7 +24,7 @@ module Pod
|
|
24
24
|
|
25
25
|
# Initialize a new instance
|
26
26
|
#
|
27
|
-
# @param [
|
27
|
+
# @param [String] version @see #version
|
28
28
|
# @param [Platform] platform @see #platform
|
29
29
|
# @param [Symbol] bundle_package_type @see #bundle_package_type
|
30
30
|
# @param [Hash] additional_entries @see #additional_entries
|
data/lib/cocoapods/installer.rb
CHANGED
@@ -156,17 +156,30 @@ module Pod
|
|
156
156
|
resolve_dependencies
|
157
157
|
download_dependencies
|
158
158
|
validate_targets
|
159
|
+
if installation_options.skip_pods_project_generation?
|
160
|
+
show_skip_pods_project_generation_message
|
161
|
+
else
|
162
|
+
integrate
|
163
|
+
end
|
164
|
+
perform_post_install_actions
|
165
|
+
end
|
166
|
+
|
167
|
+
def show_skip_pods_project_generation_message
|
168
|
+
UI.section 'Skipping Pods Project Creation'
|
169
|
+
UI.section 'Skipping User Project Integration'
|
170
|
+
end
|
171
|
+
|
172
|
+
def integrate
|
159
173
|
generate_pods_project
|
160
174
|
if installation_options.integrate_targets?
|
161
175
|
integrate_user_project
|
162
176
|
else
|
163
177
|
UI.section 'Skipping User Project Integration'
|
164
178
|
end
|
165
|
-
perform_post_install_actions
|
166
179
|
end
|
167
180
|
|
168
181
|
def analyze_project_cache
|
169
|
-
user_projects = aggregate_targets.map(&:user_project).compact
|
182
|
+
user_projects = aggregate_targets.map(&:user_project).compact.uniq
|
170
183
|
object_version = user_projects.min_by { |p| p.object_version.to_i }.object_version.to_i unless user_projects.empty?
|
171
184
|
|
172
185
|
if !installation_options.incremental_installation
|
@@ -175,8 +188,8 @@ module Pod
|
|
175
188
|
analysis_result.all_user_build_configurations, object_version)
|
176
189
|
else
|
177
190
|
UI.message 'Analyzing Project Cache' do
|
178
|
-
@installation_cache = ProjectCache::ProjectInstallationCache.from_file(sandbox.project_installation_cache_path)
|
179
|
-
@metadata_cache = ProjectCache::ProjectMetadataCache.from_file(sandbox.project_metadata_cache_path)
|
191
|
+
@installation_cache = ProjectCache::ProjectInstallationCache.from_file(sandbox, sandbox.project_installation_cache_path)
|
192
|
+
@metadata_cache = ProjectCache::ProjectMetadataCache.from_file(sandbox, sandbox.project_metadata_cache_path)
|
180
193
|
@project_cache_version = ProjectCache::ProjectCacheVersion.from_file(sandbox.project_version_cache_path)
|
181
194
|
|
182
195
|
force_clean_install = clean_install || project_cache_version.version != Version.create(VersionMetadata.project_cache_version)
|
@@ -337,8 +350,7 @@ module Pod
|
|
337
350
|
|
338
351
|
# @!group Installation results
|
339
352
|
|
340
|
-
# @return [Analyzer] the
|
341
|
-
# needs to be installed.
|
353
|
+
# @return [Analyzer::AnalysisResult] the result of the analysis performed during installation
|
342
354
|
#
|
343
355
|
attr_reader :analysis_result
|
344
356
|
|
@@ -496,7 +508,7 @@ module Pod
|
|
496
508
|
install_source_of_pod(spec.name)
|
497
509
|
end
|
498
510
|
else
|
499
|
-
UI.
|
511
|
+
UI.section("Using #{spec}", title_options[:verbose_prefix]) do
|
500
512
|
create_pod_installer(spec.name)
|
501
513
|
end
|
502
514
|
end
|
@@ -514,7 +526,7 @@ module Pod
|
|
514
526
|
raise StandardError, message
|
515
527
|
end
|
516
528
|
|
517
|
-
pod_installer = PodSourceInstaller.new(sandbox, specs_by_platform, :can_cache => installation_options.clean?)
|
529
|
+
pod_installer = PodSourceInstaller.new(sandbox, podfile, specs_by_platform, :can_cache => installation_options.clean?)
|
518
530
|
pod_installers << pod_installer
|
519
531
|
pod_installer
|
520
532
|
end
|
@@ -574,7 +586,7 @@ module Pod
|
|
574
586
|
end
|
575
587
|
|
576
588
|
def validate_targets
|
577
|
-
validator = Xcode::TargetValidator.new(aggregate_targets, pod_targets)
|
589
|
+
validator = Xcode::TargetValidator.new(aggregate_targets, pod_targets, installation_options)
|
578
590
|
validator.validate!
|
579
591
|
end
|
580
592
|
|
@@ -740,16 +752,24 @@ module Pod
|
|
740
752
|
@lockfile = generate_lockfile
|
741
753
|
|
742
754
|
UI.message "- Writing Lockfile in #{UI.path config.lockfile_path}" do
|
755
|
+
# No need to invoke Sandbox#update_changed_file here since this logic already handles checking if the
|
756
|
+
# contents of the file are the same.
|
743
757
|
@lockfile.write_to_disk(config.lockfile_path)
|
744
758
|
end
|
745
759
|
|
746
760
|
UI.message "- Writing Manifest in #{UI.path sandbox.manifest_path}" do
|
747
|
-
|
748
|
-
|
749
|
-
|
761
|
+
# No need to invoke Sandbox#update_changed_file here since this logic already handles checking if the
|
762
|
+
# contents of the file are the same.
|
763
|
+
@lockfile.write_to_disk(sandbox.manifest_path)
|
750
764
|
end
|
751
765
|
end
|
752
766
|
|
767
|
+
# @param [ProjectCacheAnalysisResult] cache_analysis_result
|
768
|
+
# The cache analysis result for the current installation.
|
769
|
+
#
|
770
|
+
# @param [Hash{String => TargetInstallationResult}] target_installation_results
|
771
|
+
# The installation results for pod targets installed.
|
772
|
+
#
|
753
773
|
def update_project_cache(cache_analysis_result, target_installation_results)
|
754
774
|
return unless installation_cache || metadata_cache
|
755
775
|
installation_cache.update_cache_key_by_target_label!(cache_analysis_result.cache_key_by_target_label)
|