cocoapods 1.4.0 → 1.5.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 +149 -0
- data/lib/cocoapods.rb +1 -0
- data/lib/cocoapods/command/outdated.rb +2 -2
- data/lib/cocoapods/command/repo/push.rb +5 -0
- data/lib/cocoapods/command/update.rb +21 -5
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/acknowledgements.rb +6 -3
- data/lib/cocoapods/generator/constant.rb +19 -0
- data/lib/cocoapods/generator/copy_resources_script.rb +15 -3
- data/lib/cocoapods/generator/embed_frameworks_script.rb +11 -2
- data/lib/cocoapods/generator/module_map.rb +56 -5
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +19 -13
- data/lib/cocoapods/generator/xcconfig/pod_xcconfig.rb +4 -6
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +25 -2
- data/lib/cocoapods/installer.rb +17 -8
- data/lib/cocoapods/installer/analyzer.rb +48 -38
- data/lib/cocoapods/installer/analyzer/analysis_result.rb +11 -0
- data/lib/cocoapods/installer/analyzer/locking_dependency_analyzer.rb +7 -6
- data/lib/cocoapods/installer/analyzer/pod_variant.rb +8 -8
- data/lib/cocoapods/installer/analyzer/pod_variant_set.rb +3 -3
- data/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb +54 -0
- data/lib/cocoapods/installer/analyzer/specs_state.rb +16 -16
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +7 -11
- data/lib/cocoapods/installer/pod_source_installer.rb +2 -3
- data/lib/cocoapods/installer/podfile_validator.rb +11 -10
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +72 -28
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +8 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +9 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +32 -24
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +97 -54
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +9 -11
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +4 -9
- data/lib/cocoapods/installer/xcode/target_validator.rb +32 -18
- data/lib/cocoapods/project.rb +32 -17
- data/lib/cocoapods/resolver.rb +59 -31
- data/lib/cocoapods/resolver/lazy_specification.rb +28 -18
- data/lib/cocoapods/sandbox.rb +2 -4
- data/lib/cocoapods/sandbox/file_accessor.rb +25 -9
- data/lib/cocoapods/sandbox/headers_store.rb +31 -6
- data/lib/cocoapods/sandbox/path_list.rb +36 -46
- data/lib/cocoapods/target.rb +7 -4
- data/lib/cocoapods/target/aggregate_target.rb +10 -8
- data/lib/cocoapods/target/pod_target.rb +87 -20
- data/lib/cocoapods/user_interface/error_report.rb +1 -1
- data/lib/cocoapods/user_interface/inspector_reporter.rb +4 -4
- data/lib/cocoapods/validator.rb +40 -29
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23ada42af2f965ab38a89ef0b7c1c131f23efb03297f118b9804a4232a59b791
|
4
|
+
data.tar.gz: f4f83b2e947828dec6f070c7f500261a8ee787f754e839ce76d82cecb93bf6bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 517bac4e5a5b1c9db7920e7d98672388d723e210144be3e25389b938b4d5cd7e958d9c82eb66e2a66ccde6f333f074ade23d64c24cc0a698b7eef3e2d69d3f04
|
7
|
+
data.tar.gz: d328813a70d9b5bb595a58c1995687efdf14667161b6de54448ea78fc03a8602a45dd7b08fc6b4ffd5ed412d71e6ba9dfdc06a40cef57096415cf4fcb2f151b1
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,155 @@ To install or update CocoaPods see this [guide](http://docs.cocoapods.org/guides
|
|
4
4
|
|
5
5
|
To install release candidates run `[sudo] gem install cocoapods --pre`
|
6
6
|
|
7
|
+
## 1.5.0.beta.1 (2018-03-23)
|
8
|
+
|
9
|
+
##### Enhancements
|
10
|
+
|
11
|
+
* Add `--exclude-pods` option to `pod update` to allow excluding specific pods from update
|
12
|
+
[Oleksandr Kruk](https://github.com/0mega)
|
13
|
+
[#7334](https://github.com/CocoaPods/CocoaPods/issues/7334)
|
14
|
+
|
15
|
+
* Add support for mixed Objective-C and Swift static frameworks
|
16
|
+
[Paul Beusterien](https://github.com/paulb777)
|
17
|
+
[#7213](https://github.com/CocoaPods/CocoaPods/issues/7213)
|
18
|
+
|
19
|
+
* Improve `pod install` performance for pods with exact file paths rather than glob patterns
|
20
|
+
[Muhammed Yavuz Nuzumlalı](https://github.com/manuyavuz)
|
21
|
+
[#7473](https://github.com/CocoaPods/CocoaPods/pull/7473)
|
22
|
+
|
23
|
+
* Display a message when a pods source has changed during installation
|
24
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
25
|
+
[#7464](https://github.com/CocoaPods/CocoaPods/pull/7464)
|
26
|
+
|
27
|
+
* Add support for modular header search paths, include "legacy" support.
|
28
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
29
|
+
[#7412](https://github.com/CocoaPods/CocoaPods/pull/7412)
|
30
|
+
|
31
|
+
* Set direct and transitive dependency header search paths for pod targets
|
32
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
33
|
+
[#7116](https://github.com/CocoaPods/CocoaPods/pull/7116)
|
34
|
+
|
35
|
+
* Log target names missing host for libraries
|
36
|
+
[Keith Smiley](https://github.com/keith)
|
37
|
+
[#7346](https://github.com/CocoaPods/CocoaPods/pull/7346)
|
38
|
+
|
39
|
+
* Add a `--no-overwrite` flag to `pod repo push` to disable overwriting
|
40
|
+
existing specs that have already been pushed.
|
41
|
+
[Samuel Giddins](https://github.com/segiddins)
|
42
|
+
|
43
|
+
* Store which specs repo a pod comes from in the lockfile.
|
44
|
+
[Samuel Giddins](https://github.com/segiddins)
|
45
|
+
|
46
|
+
* Add `set -u` to the copy frameworks and copy resources scripts.
|
47
|
+
[Keith Smiley](https://github.com/keith)
|
48
|
+
[#7180](https://github.com/CocoaPods/CocoaPods/pull/7180)
|
49
|
+
|
50
|
+
* Allow integrating into static library targets without attempting to copy
|
51
|
+
resources or embed frameworks unless `UNLOCALIZED_RESOURCES_FOLDER_PATH`
|
52
|
+
or `FRAMEWORKS_FOLDER_PATH` is set.
|
53
|
+
[Samuel Giddins](https://github.com/segiddins)
|
54
|
+
|
55
|
+
* Change color scheme of `pod outdated` from red-yellow-green to red-blue-green to be more colorblind friendly
|
56
|
+
[iv-mexx](https://github.com/iv-mexx)
|
57
|
+
[#7372](https://github.com/CocoaPods/CocoaPods/issues/7372)
|
58
|
+
|
59
|
+
* Add support for integrating swift pods as static libraries.
|
60
|
+
[Danielle Tomlinson](https://github.com/dantoml)
|
61
|
+
[Samuel Giddins](https://github.com/segiddins)
|
62
|
+
[#6899](https://github.com/CocoaPods/CocoaPods/issues/6899)
|
63
|
+
|
64
|
+
* Document format of POD_NAMES in pod update
|
65
|
+
[mrh-is](https://github.com/mrh-is)
|
66
|
+
|
67
|
+
* Update validator to stream output as xcodebuild runs
|
68
|
+
[abbeycode](https://github.com/abbeycode)
|
69
|
+
[#7040](https://github.com/CocoaPods/CocoaPods/issues/7040)
|
70
|
+
|
71
|
+
##### Bug Fixes
|
72
|
+
|
73
|
+
* Create a generic Info.plist file for test targets
|
74
|
+
Use xcode default `PRODUCT_MODULE_NAME` for generated test targets
|
75
|
+
[Paul Zabelin](https://github.com/paulz)
|
76
|
+
[#7506](https://github.com/CocoaPods/CocoaPods/issues/7506)
|
77
|
+
|
78
|
+
* Prevent `xcassets` compilation from stomping over the apps `xcassets`
|
79
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
80
|
+
[#7003](https://github.com/CocoaPods/CocoaPods/issues/7003)
|
81
|
+
|
82
|
+
* Fix script phase output path for `.xcasset` resources
|
83
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
84
|
+
[#7511](https://github.com/CocoaPods/CocoaPods/issues/7511)
|
85
|
+
|
86
|
+
* Fix `PRODUCT_MODULE_NAME` for generated test targets
|
87
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
88
|
+
[#7507](https://github.com/CocoaPods/CocoaPods/issues/7507)
|
89
|
+
|
90
|
+
* Ensure `SWIFT_VERSION` is set for test only pod targets during validation
|
91
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
92
|
+
[#7498](https://github.com/CocoaPods/CocoaPods/issues/7498)
|
93
|
+
|
94
|
+
* Fix iOS test native target signing settings
|
95
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
96
|
+
[#7504](https://github.com/CocoaPods/CocoaPods/pull/7504)
|
97
|
+
|
98
|
+
* Clear input/output paths if they exceed an arbitrary limit
|
99
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
100
|
+
[#7362](https://github.com/CocoaPods/CocoaPods/issues/7362)
|
101
|
+
|
102
|
+
* Warn instead of throwing an exception when a development pod specifies an invalid license file path
|
103
|
+
[Eric Amorde](https://github.com/amorde)
|
104
|
+
[#7377](https://github.com/CocoaPods/CocoaPods/issues/7377)
|
105
|
+
|
106
|
+
* Better static frameworks transitive dependency error checking
|
107
|
+
[Paul Beusterien](https://github.com/paulb777)
|
108
|
+
[#7352](https://github.com/CocoaPods/CocoaPods/issues/7352)
|
109
|
+
|
110
|
+
* Always update input/output paths even if they are empty
|
111
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
112
|
+
[#7368](https://github.com/CocoaPods/CocoaPods/pull/7368)
|
113
|
+
|
114
|
+
* Unique all available pre-release versions when displaying
|
115
|
+
[Samuel Giddins](https://github.com/segiddins)
|
116
|
+
[#7353](https://github.com/CocoaPods/CocoaPods/pull/7353)
|
117
|
+
|
118
|
+
* Do not attempt compilation for pods with no sources and skipping import validation
|
119
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
120
|
+
[#7336](https://github.com/CocoaPods/CocoaPods/issues/7336)
|
121
|
+
|
122
|
+
* Avoid adding copy resources and frameworks script phases when those phases
|
123
|
+
would not copy anything.
|
124
|
+
[Keith Smiley](https://github.com/keith)
|
125
|
+
[Samuel Giddins](https://github.com/segiddins)
|
126
|
+
|
127
|
+
* Speed up `pod install` times by up to 50% for very large project.
|
128
|
+
[Samuel Giddins](https://github.com/segiddins)
|
129
|
+
|
130
|
+
* Avoid dependency resolution conflicts when a pod depends upon a local pod.
|
131
|
+
[Samuel Giddins](https://github.com/segiddins)
|
132
|
+
|
133
|
+
* Fix legacy header search paths that broke due to #7116 and #7412.
|
134
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
135
|
+
[#7445](https://github.com/CocoaPods/CocoaPods/pull/7445)
|
136
|
+
|
137
|
+
* Stop adding header search paths that do not contain any headers.
|
138
|
+
[Samuel Giddins](https://github.com/segiddins)
|
139
|
+
|
140
|
+
* Do not warn when http source uses `file:///` URI scheme
|
141
|
+
[Dimitris Koutsogiorgas](https://github.com/dnkoutso)
|
142
|
+
[#7460](https://github.com/CocoaPods/CocoaPods/issues/7460)
|
143
|
+
|
144
|
+
* Remove bogus `PROVISIONING_PROFILE_SPECIFIER` value from Pods project.
|
145
|
+
[Ruenzuo](https://github.com/Ruenzuo)
|
146
|
+
[#6964](https://github.com/CocoaPods/CocoaPods/issues/6964)
|
147
|
+
|
148
|
+
* Fix returning absolute paths from glob, fixes issue with static framework and public headers.
|
149
|
+
[Morgan McKenzie](https://github.com/rmtmckenzie)
|
150
|
+
[#7463](https://github.com/CocoaPods/CocoaPods/issues/7463)
|
151
|
+
|
152
|
+
* Improve messages when integrating Swift pods as static libraries.
|
153
|
+
[Marcelo Fabri](https://github.com/marcelofabri)
|
154
|
+
[#7495](https://github.com/CocoaPods/CocoaPods/issues/7495)
|
155
|
+
|
7
156
|
## 1.4.0 (2018-01-18)
|
8
157
|
|
9
158
|
##### Enhancements
|
data/lib/cocoapods.rb
CHANGED
@@ -57,6 +57,7 @@ module Pod
|
|
57
57
|
autoload :Markdown, 'cocoapods/generator/acknowledgements/markdown'
|
58
58
|
autoload :Plist, 'cocoapods/generator/acknowledgements/plist'
|
59
59
|
autoload :BridgeSupport, 'cocoapods/generator/bridge_support'
|
60
|
+
autoload :Constant, 'cocoapods/generator/constant'
|
60
61
|
autoload :CopyResourcesScript, 'cocoapods/generator/copy_resources_script'
|
61
62
|
autoload :DummySource, 'cocoapods/generator/dummy_source'
|
62
63
|
autoload :EmbedFrameworksScript, 'cocoapods/generator/embed_frameworks_script'
|
@@ -24,13 +24,13 @@ module Pod
|
|
24
24
|
else
|
25
25
|
UI.section 'The color indicates what happens when you run `pod update`' do
|
26
26
|
UI.puts "#{'<green>'.green}\t\t - Will be updated to the newest version"
|
27
|
-
UI.puts "#{'<
|
27
|
+
UI.puts "#{'<blue>'.blue}\t - Will be updated, but not to the newest version because of specified version in Podfile"
|
28
28
|
UI.puts "#{'<red>'.red}\t\t - Will not be updated because of specified version in Podfile"
|
29
29
|
UI.puts ''
|
30
30
|
end
|
31
31
|
UI.section 'The following pod updates are available:' do
|
32
32
|
updates.each do |(name, from_version, matching_version, to_version)|
|
33
|
-
color = :
|
33
|
+
color = :blue
|
34
34
|
if matching_version == to_version
|
35
35
|
color = :green
|
36
36
|
elsif from_version == matching_version
|
@@ -36,6 +36,7 @@ module Pod
|
|
36
36
|
['--use-json', 'Push JSON spec to repo'],
|
37
37
|
['--swift-version=VERSION', 'The SWIFT_VERSION that should be used when linting the spec. ' \
|
38
38
|
'This takes precedence over a .swift-version file.'],
|
39
|
+
['--no-overwrite', 'Disallow pushing that would overwrite an existing spec.'],
|
39
40
|
].concat(super)
|
40
41
|
end
|
41
42
|
|
@@ -54,6 +55,7 @@ module Pod
|
|
54
55
|
@swift_version = argv.option('swift-version', nil)
|
55
56
|
@skip_import_validation = argv.flag?('skip-import-validation', false)
|
56
57
|
@skip_tests = argv.flag?('skip-tests', false)
|
58
|
+
@allow_overwrite = argv.flag?('overwrite', true)
|
57
59
|
super
|
58
60
|
end
|
59
61
|
|
@@ -183,6 +185,9 @@ module Pod
|
|
183
185
|
if @message && !@message.empty?
|
184
186
|
message = @message
|
185
187
|
elsif output_path.exist?
|
188
|
+
unless @allow_overwrite
|
189
|
+
raise Informative, "#{spec} already exists and overwriting has been disabled."
|
190
|
+
end
|
186
191
|
message = "[Fix] #{spec}"
|
187
192
|
elsif output_path.dirname.directory?
|
188
193
|
message = "[Update] #{spec}"
|
@@ -8,11 +8,11 @@ module Pod
|
|
8
8
|
'Podfile.lock'
|
9
9
|
|
10
10
|
self.description = <<-DESC
|
11
|
-
Updates the Pods identified by the specified `POD_NAMES
|
12
|
-
|
13
|
-
of the Podfile.lock.
|
14
|
-
|
15
|
-
|
11
|
+
Updates the Pods identified by the specified `POD_NAMES`, which is a
|
12
|
+
space-delimited list of pod names. If no `POD_NAMES` are specified, it
|
13
|
+
updates all the Pods, ignoring the contents of the Podfile.lock. This
|
14
|
+
command is reserved for the update of dependencies; pod install should
|
15
|
+
be used to install changes to the Podfile.
|
16
16
|
DESC
|
17
17
|
|
18
18
|
self.arguments = [
|
@@ -23,6 +23,7 @@ module Pod
|
|
23
23
|
[
|
24
24
|
['--sources=https://github.com/artsy/Specs,master', 'The sources from which to update dependent pods. ' \
|
25
25
|
'Multiple sources must be comma-delimited. The master repo will not be included by default with this option.'],
|
26
|
+
['--exclude-pods=podName', 'Pods to exclude during update. Multiple pods must be comma-delimited.'],
|
26
27
|
].concat(super)
|
27
28
|
end
|
28
29
|
|
@@ -30,6 +31,7 @@ module Pod
|
|
30
31
|
@pods = argv.arguments! unless argv.arguments.empty?
|
31
32
|
|
32
33
|
source_urls = argv.option('sources', '').split(',')
|
34
|
+
excluded_pods = argv.option('exclude-pods', '').split(',')
|
33
35
|
unless source_urls.empty?
|
34
36
|
source_pods = source_urls.flat_map { |url| config.sources_manager.source_with_name_or_url(url).pods }
|
35
37
|
unless source_pods.empty?
|
@@ -42,6 +44,20 @@ module Pod
|
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
47
|
+
unless excluded_pods.empty?
|
48
|
+
@pods ||= config.lockfile.pod_names.dup
|
49
|
+
|
50
|
+
non_installed_pods = (excluded_pods - @pods)
|
51
|
+
unless non_installed_pods.empty?
|
52
|
+
pluralized_words = non_installed_pods.length > 1 ? %w(Pods are) : %w(Pod is)
|
53
|
+
message = "Trying to skip `#{non_installed_pods.join('`, `')}` #{pluralized_words.first} " \
|
54
|
+
"which #{pluralized_words.last} not installed"
|
55
|
+
raise Informative, message
|
56
|
+
end
|
57
|
+
|
58
|
+
@pods.delete_if { |pod| excluded_pods.include?(pod) }
|
59
|
+
end
|
60
|
+
|
45
61
|
super
|
46
62
|
end
|
47
63
|
|
@@ -73,13 +73,16 @@ module Pod
|
|
73
73
|
return nil unless spec.license
|
74
74
|
text = spec.license[:text]
|
75
75
|
unless text
|
76
|
-
if license_file =
|
77
|
-
|
78
|
-
|
76
|
+
if license_file = spec.license[:file]
|
77
|
+
license_path = file_accessor(spec).root + license_file
|
78
|
+
if File.exist?(license_path)
|
79
|
+
text = IO.read(license_path)
|
79
80
|
else
|
80
81
|
UI.warn "Unable to read the license file `#{license_file}` " \
|
81
82
|
"for the spec `#{spec}`"
|
82
83
|
end
|
84
|
+
elsif license_file = file_accessor(spec).license
|
85
|
+
text = IO.read(license_file)
|
83
86
|
end
|
84
87
|
end
|
85
88
|
text
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Pod
|
2
|
+
module Generator
|
3
|
+
# Generates a constant file.
|
4
|
+
#
|
5
|
+
class Constant
|
6
|
+
def initialize(contents)
|
7
|
+
@generate = contents
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_reader :generate
|
11
|
+
|
12
|
+
def save_as(path)
|
13
|
+
path.open('w') do |f|
|
14
|
+
f.write(generate)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -96,6 +96,14 @@ module Pod
|
|
96
96
|
INSTALL_RESOURCES_FUNCTION = <<EOS
|
97
97
|
#!/bin/sh
|
98
98
|
set -e
|
99
|
+
set -u
|
100
|
+
set -o pipefail
|
101
|
+
|
102
|
+
if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
|
103
|
+
# If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
|
104
|
+
# resources to, so exit 0 (signalling the script phase was successful).
|
105
|
+
exit 0
|
106
|
+
fi
|
99
107
|
|
100
108
|
mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
101
109
|
|
@@ -108,7 +116,7 @@ XCASSET_FILES=()
|
|
108
116
|
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
109
117
|
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
110
118
|
|
111
|
-
case "${TARGETED_DEVICE_FAMILY}" in
|
119
|
+
case "${TARGETED_DEVICE_FAMILY:-}" in
|
112
120
|
1,2)
|
113
121
|
TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
|
114
122
|
;;
|
@@ -194,7 +202,7 @@ EOS
|
|
194
202
|
|
195
203
|
XCASSETS_COMPILE = <<EOS
|
196
204
|
|
197
|
-
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
|
205
|
+
if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
|
198
206
|
then
|
199
207
|
# Find all other xcassets (this unfortunately includes those of path pods and other targets).
|
200
208
|
OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
|
@@ -204,7 +212,11 @@ then
|
|
204
212
|
fi
|
205
213
|
done <<<"$OTHER_XCASSETS"
|
206
214
|
|
207
|
-
|
215
|
+
if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
|
216
|
+
printf "%s\\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
|
217
|
+
else
|
218
|
+
printf "%s\\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist"
|
219
|
+
fi
|
208
220
|
fi
|
209
221
|
EOS
|
210
222
|
end
|
@@ -37,10 +37,19 @@ module Pod
|
|
37
37
|
script = <<-SH.strip_heredoc
|
38
38
|
#!/bin/sh
|
39
39
|
set -e
|
40
|
+
set -u
|
41
|
+
set -o pipefail
|
42
|
+
|
43
|
+
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
44
|
+
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
45
|
+
# frameworks to, so exit 0 (signalling the script phase was successful).
|
46
|
+
exit 0
|
47
|
+
fi
|
40
48
|
|
41
49
|
echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
42
50
|
mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
|
43
51
|
|
52
|
+
COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
|
44
53
|
SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
|
45
54
|
|
46
55
|
# Used as a return value for each invocation of `strip_invalid_archs` function.
|
@@ -129,10 +138,10 @@ module Pod
|
|
129
138
|
|
130
139
|
# Signs a framework with the provided identity
|
131
140
|
code_sign_if_enabled() {
|
132
|
-
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
141
|
+
if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
|
133
142
|
# Use the current code_sign_identitiy
|
134
143
|
echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
|
135
|
-
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
|
144
|
+
local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
|
136
145
|
|
137
146
|
if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
|
138
147
|
code_sign_cmd="$code_sign_cmd &"
|
@@ -10,12 +10,41 @@ module Pod
|
|
10
10
|
#
|
11
11
|
attr_reader :target
|
12
12
|
|
13
|
+
attr_reader :headers
|
14
|
+
|
15
|
+
Header = Struct.new(:path, :umbrella, :private, :textual, :exclude, :size, :mtime) do
|
16
|
+
alias_method :private?, :private
|
17
|
+
def to_s
|
18
|
+
[
|
19
|
+
(:private if private?),
|
20
|
+
(:textual if textual),
|
21
|
+
(:umbrella if umbrella),
|
22
|
+
(:exclude if exclude),
|
23
|
+
'header',
|
24
|
+
%("#{path}"),
|
25
|
+
attrs,
|
26
|
+
].compact.join(' ')
|
27
|
+
end
|
28
|
+
|
29
|
+
def attrs
|
30
|
+
attrs = {
|
31
|
+
'size' => size,
|
32
|
+
'mtime' => mtime,
|
33
|
+
}.reject { |_k, v| v.nil? }
|
34
|
+
return nil if attrs.empty?
|
35
|
+
attrs.to_s
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
13
39
|
# Initialize a new instance
|
14
40
|
#
|
15
41
|
# @param [PodTarget] target @see target
|
16
42
|
#
|
17
43
|
def initialize(target)
|
18
44
|
@target = target
|
45
|
+
@headers = [
|
46
|
+
Header.new(target.umbrella_header_path.basename, true),
|
47
|
+
]
|
19
48
|
end
|
20
49
|
|
21
50
|
# Generates and saves the Info.plist to the given path.
|
@@ -38,14 +67,36 @@ module Pod
|
|
38
67
|
#
|
39
68
|
def generate
|
40
69
|
<<-MODULE_MAP.strip_heredoc
|
41
|
-
|
42
|
-
|
70
|
+
#{module_specifier_prefix}module #{target.product_module_name}#{module_declaration_attributes} {
|
71
|
+
#{headers.join("\n ")}
|
43
72
|
|
44
|
-
|
45
|
-
|
46
|
-
|
73
|
+
export *
|
74
|
+
module * { export * }
|
75
|
+
}
|
47
76
|
MODULE_MAP
|
48
77
|
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
# The prefix to `module` to prepend in the module map.
|
82
|
+
# Ensures that only framework targets have `framework` prepended.
|
83
|
+
#
|
84
|
+
def module_specifier_prefix
|
85
|
+
if target.requires_frameworks?
|
86
|
+
'framework '
|
87
|
+
else
|
88
|
+
''
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# The suffix attributes to `module`.
|
93
|
+
# Ensures that library module maps are treated as `system` modules,
|
94
|
+
# supressing warnings when imported, as is done for header imports given via `-isystem`.
|
95
|
+
#
|
96
|
+
def module_declaration_attributes
|
97
|
+
return '' if target.requires_frameworks?
|
98
|
+
' [system]'
|
99
|
+
end
|
49
100
|
end
|
50
101
|
end
|
51
102
|
end
|