cocoapods 1.4.0 → 1.5.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 +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
|