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
@@ -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)
|