cocoapods 1.9.0.beta.3 → 1.10.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 +222 -0
- data/README.md +2 -1
- data/lib/cocoapods.rb +3 -1
- data/lib/cocoapods/command.rb +12 -2
- data/lib/cocoapods/command/lib/lint.rb +12 -3
- data/lib/cocoapods/command/repo/push.rb +1 -1
- data/lib/cocoapods/command/repo/update.rb +11 -0
- data/lib/cocoapods/command/spec/lint.rb +12 -3
- data/lib/cocoapods/config.rb +17 -0
- data/lib/cocoapods/downloader/cache.rb +2 -2
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/app_target_helper.rb +10 -2
- data/lib/cocoapods/generator/copy_dsyms_script.rb +56 -0
- data/lib/cocoapods/generator/copy_resources_script.rb +2 -14
- data/lib/cocoapods/generator/copy_xcframework_script.rb +245 -0
- data/lib/cocoapods/generator/embed_frameworks_script.rb +137 -206
- data/lib/cocoapods/generator/script_phase_constants.rb +99 -0
- data/lib/cocoapods/installer.rb +70 -3
- data/lib/cocoapods/installer/analyzer.rb +17 -8
- data/lib/cocoapods/installer/analyzer/target_inspection_result.rb +1 -1
- data/lib/cocoapods/installer/base_install_hooks_context.rb +135 -0
- data/lib/cocoapods/installer/installation_options.rb +5 -0
- data/lib/cocoapods/installer/pod_source_installer.rb +2 -1
- data/lib/cocoapods/installer/post_install_hooks_context.rb +1 -127
- data/lib/cocoapods/installer/post_integrate_hooks_context.rb +9 -0
- data/lib/cocoapods/installer/sandbox_dir_cleaner.rb +2 -1
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +132 -111
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +45 -6
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +13 -27
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +2 -1
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb +4 -4
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +175 -58
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_integrator.rb +61 -30
- data/lib/cocoapods/installer/xcode/pods_project_generator/project_generator.rb +3 -2
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installation_result.rb +5 -7
- data/lib/cocoapods/installer/xcode/pods_project_generator_result.rb +19 -0
- data/lib/cocoapods/installer/xcode/target_validator.rb +1 -1
- data/lib/cocoapods/sources_manager.rb +2 -1
- data/lib/cocoapods/target.rb +44 -2
- data/lib/cocoapods/target/aggregate_target.rb +35 -0
- data/lib/cocoapods/target/build_settings.rb +86 -19
- data/lib/cocoapods/target/pod_target.rb +85 -11
- data/lib/cocoapods/user_interface/error_report.rb +1 -1
- data/lib/cocoapods/user_interface/inspector_reporter.rb +3 -10
- data/lib/cocoapods/validator.rb +32 -8
- data/lib/cocoapods/xcode/framework_paths.rb +1 -1
- data/lib/cocoapods/xcode/xcframework.rb +17 -4
- data/lib/cocoapods/xcode/xcframework/xcframework_slice.rb +81 -3
- metadata +30 -38
- data/lib/cocoapods/generator/prepare_artifacts_script.rb +0 -244
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0.beta.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Duran
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2020-
|
14
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: cocoapods-core
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 1.10.0.beta.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.
|
29
|
+
version: 1.10.0.beta.1
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: claide
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
76
|
+
version: 1.4.0
|
77
77
|
- - "<"
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: '2.0'
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
requirements:
|
84
84
|
- - ">="
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: 1.
|
86
|
+
version: 1.4.0
|
87
87
|
- - "<"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '2.0'
|
@@ -127,26 +127,6 @@ dependencies:
|
|
127
127
|
- - "<"
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '2.0'
|
130
|
-
- !ruby/object:Gem::Dependency
|
131
|
-
name: cocoapods-stats
|
132
|
-
requirement: !ruby/object:Gem::Requirement
|
133
|
-
requirements:
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: 1.0.0
|
137
|
-
- - "<"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '2.0'
|
140
|
-
type: :runtime
|
141
|
-
prerelease: false
|
142
|
-
version_requirements: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - ">="
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: 1.0.0
|
147
|
-
- - "<"
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '2.0'
|
150
130
|
- !ruby/object:Gem::Dependency
|
151
131
|
name: cocoapods-trunk
|
152
132
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,7 +187,7 @@ dependencies:
|
|
207
187
|
requirements:
|
208
188
|
- - ">="
|
209
189
|
- !ruby/object:Gem::Version
|
210
|
-
version: 1.
|
190
|
+
version: 1.17.0
|
211
191
|
- - "<"
|
212
192
|
- !ruby/object:Gem::Version
|
213
193
|
version: '2.0'
|
@@ -217,7 +197,7 @@ dependencies:
|
|
217
197
|
requirements:
|
218
198
|
- - ">="
|
219
199
|
- !ruby/object:Gem::Version
|
220
|
-
version: 1.
|
200
|
+
version: 1.17.0
|
221
201
|
- - "<"
|
222
202
|
- !ruby/object:Gem::Version
|
223
203
|
version: '2.0'
|
@@ -225,20 +205,14 @@ dependencies:
|
|
225
205
|
name: activesupport
|
226
206
|
requirement: !ruby/object:Gem::Requirement
|
227
207
|
requirements:
|
228
|
-
- - "
|
229
|
-
- !ruby/object:Gem::Version
|
230
|
-
version: 4.0.2
|
231
|
-
- - "<"
|
208
|
+
- - ">"
|
232
209
|
- !ruby/object:Gem::Version
|
233
210
|
version: '5'
|
234
211
|
type: :runtime
|
235
212
|
prerelease: false
|
236
213
|
version_requirements: !ruby/object:Gem::Requirement
|
237
214
|
requirements:
|
238
|
-
- - "
|
239
|
-
- !ruby/object:Gem::Version
|
240
|
-
version: 4.0.2
|
241
|
-
- - "<"
|
215
|
+
- - ">"
|
242
216
|
- !ruby/object:Gem::Version
|
243
217
|
version: '5'
|
244
218
|
- !ruby/object:Gem::Dependency
|
@@ -331,6 +305,20 @@ dependencies:
|
|
331
305
|
- - "~>"
|
332
306
|
- !ruby/object:Gem::Version
|
333
307
|
version: '1.4'
|
308
|
+
- !ruby/object:Gem::Dependency
|
309
|
+
name: addressable
|
310
|
+
requirement: !ruby/object:Gem::Requirement
|
311
|
+
requirements:
|
312
|
+
- - "~>"
|
313
|
+
- !ruby/object:Gem::Version
|
314
|
+
version: '2.6'
|
315
|
+
type: :runtime
|
316
|
+
prerelease: false
|
317
|
+
version_requirements: !ruby/object:Gem::Requirement
|
318
|
+
requirements:
|
319
|
+
- - "~>"
|
320
|
+
- !ruby/object:Gem::Version
|
321
|
+
version: '2.6'
|
334
322
|
- !ruby/object:Gem::Dependency
|
335
323
|
name: bacon
|
336
324
|
requirement: !ruby/object:Gem::Requirement
|
@@ -452,7 +440,9 @@ files:
|
|
452
440
|
- lib/cocoapods/generator/app_target_helper.rb
|
453
441
|
- lib/cocoapods/generator/bridge_support.rb
|
454
442
|
- lib/cocoapods/generator/constant.rb
|
443
|
+
- lib/cocoapods/generator/copy_dsyms_script.rb
|
455
444
|
- lib/cocoapods/generator/copy_resources_script.rb
|
445
|
+
- lib/cocoapods/generator/copy_xcframework_script.rb
|
456
446
|
- lib/cocoapods/generator/dummy_source.rb
|
457
447
|
- lib/cocoapods/generator/embed_frameworks_script.rb
|
458
448
|
- lib/cocoapods/generator/file_list.rb
|
@@ -460,7 +450,7 @@ files:
|
|
460
450
|
- lib/cocoapods/generator/info_plist_file.rb
|
461
451
|
- lib/cocoapods/generator/module_map.rb
|
462
452
|
- lib/cocoapods/generator/prefix_header.rb
|
463
|
-
- lib/cocoapods/generator/
|
453
|
+
- lib/cocoapods/generator/script_phase_constants.rb
|
464
454
|
- lib/cocoapods/generator/umbrella_header.rb
|
465
455
|
- lib/cocoapods/hooks_manager.rb
|
466
456
|
- lib/cocoapods/installer.rb
|
@@ -474,11 +464,13 @@ files:
|
|
474
464
|
- lib/cocoapods/installer/analyzer/specs_state.rb
|
475
465
|
- lib/cocoapods/installer/analyzer/target_inspection_result.rb
|
476
466
|
- lib/cocoapods/installer/analyzer/target_inspector.rb
|
467
|
+
- lib/cocoapods/installer/base_install_hooks_context.rb
|
477
468
|
- lib/cocoapods/installer/installation_options.rb
|
478
469
|
- lib/cocoapods/installer/pod_source_installer.rb
|
479
470
|
- lib/cocoapods/installer/pod_source_preparer.rb
|
480
471
|
- lib/cocoapods/installer/podfile_validator.rb
|
481
472
|
- lib/cocoapods/installer/post_install_hooks_context.rb
|
473
|
+
- lib/cocoapods/installer/post_integrate_hooks_context.rb
|
482
474
|
- lib/cocoapods/installer/pre_install_hooks_context.rb
|
483
475
|
- lib/cocoapods/installer/project_cache/project_cache.rb
|
484
476
|
- lib/cocoapods/installer/project_cache/project_cache_analysis_result.rb
|
@@ -553,7 +545,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
553
545
|
requirements:
|
554
546
|
- - ">="
|
555
547
|
- !ruby/object:Gem::Version
|
556
|
-
version: 2.
|
548
|
+
version: 2.3.3
|
557
549
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
558
550
|
requirements:
|
559
551
|
- - ">="
|
@@ -1,244 +0,0 @@
|
|
1
|
-
require 'cocoapods/xcode'
|
2
|
-
|
3
|
-
module Pod
|
4
|
-
module Generator
|
5
|
-
class PrepareArtifactsScript
|
6
|
-
# @return [Hash{String => Array<Pod::Xcode::XCFramework>}] Multiple lists of xcframeworks per
|
7
|
-
# configuration.
|
8
|
-
#
|
9
|
-
attr_reader :xcframeworks_by_config
|
10
|
-
|
11
|
-
# @return [Pathname] the root directory of the sandbox
|
12
|
-
#
|
13
|
-
attr_reader :sandbox_root
|
14
|
-
|
15
|
-
# @return [Platform] the platform of the target for which this script will run
|
16
|
-
#
|
17
|
-
attr_reader :platform
|
18
|
-
|
19
|
-
# @param [Hash{String => Array<Pod::Xcode::XCFramework>] xcframeworks_by_config
|
20
|
-
# @see #xcframeworks_by_config
|
21
|
-
#
|
22
|
-
# @param [Pathname] sandbox_root
|
23
|
-
# the sandbox root of the installation
|
24
|
-
#
|
25
|
-
# @param [Platform] platform
|
26
|
-
# the platform of the target for which this script will run
|
27
|
-
#
|
28
|
-
def initialize(xcframeworks_by_config, sandbox_root, platform)
|
29
|
-
@xcframeworks_by_config = xcframeworks_by_config
|
30
|
-
@sandbox_root = sandbox_root
|
31
|
-
@platform = platform
|
32
|
-
end
|
33
|
-
|
34
|
-
# Saves the resource script to the given pathname.
|
35
|
-
#
|
36
|
-
# @param [Pathname] pathname
|
37
|
-
# The path where the embed frameworks script should be saved.
|
38
|
-
#
|
39
|
-
# @return [void]
|
40
|
-
#
|
41
|
-
def save_as(pathname)
|
42
|
-
pathname.open('w') do |file|
|
43
|
-
file.puts(script)
|
44
|
-
end
|
45
|
-
File.chmod(0o755, pathname.to_s)
|
46
|
-
end
|
47
|
-
|
48
|
-
# @return [String] The contents of the embed frameworks script.
|
49
|
-
#
|
50
|
-
def generate
|
51
|
-
script
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
# @!group Private Helpers
|
57
|
-
|
58
|
-
# @return [String] The contents of the prepare artifacts script.
|
59
|
-
#
|
60
|
-
def script
|
61
|
-
script = <<-SH.strip_heredoc
|
62
|
-
#!/bin/sh
|
63
|
-
set -e
|
64
|
-
set -u
|
65
|
-
set -o pipefail
|
66
|
-
|
67
|
-
function on_error {
|
68
|
-
echo "$(realpath -mq "${0}"):$1: error: Unexpected failure"
|
69
|
-
}
|
70
|
-
trap 'on_error $LINENO' ERR
|
71
|
-
|
72
|
-
if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
|
73
|
-
# If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
|
74
|
-
# frameworks to, so exit 0 (signalling the script phase was successful).
|
75
|
-
exit 0
|
76
|
-
fi
|
77
|
-
|
78
|
-
# This protects against multiple targets copying the same framework dependency at the same time. The solution
|
79
|
-
# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
|
80
|
-
RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
|
81
|
-
|
82
|
-
ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt"
|
83
|
-
cat > $ARTIFACT_LIST_FILE
|
84
|
-
|
85
|
-
BCSYMBOLMAP_DIR="BCSymbolMaps"
|
86
|
-
|
87
|
-
record_artifact()
|
88
|
-
{
|
89
|
-
echo "$1" >> $ARTIFACT_LIST_FILE
|
90
|
-
}
|
91
|
-
|
92
|
-
install_artifact()
|
93
|
-
{
|
94
|
-
local source="$1"
|
95
|
-
local destination="$2"
|
96
|
-
local record=${3:-false}
|
97
|
-
|
98
|
-
# Use filter instead of exclude so missing patterns don't throw errors.
|
99
|
-
echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \\"- CVS/\\" --filter \\"- .svn/\\" --filter \\"- .git/\\" --filter \\"- .hg/\\" \\"${source}\\" \\"${destination}\\""
|
100
|
-
rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" "${source}" "${destination}"
|
101
|
-
|
102
|
-
if [[ "$record" == "true" ]]; then
|
103
|
-
artifact="${destination}/$(basename "$source")"
|
104
|
-
record_artifact "$artifact"
|
105
|
-
fi
|
106
|
-
}
|
107
|
-
|
108
|
-
# Copies a framework to derived data for use in later build phases
|
109
|
-
install_framework()
|
110
|
-
{
|
111
|
-
if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
|
112
|
-
local source="${BUILT_PRODUCTS_DIR}/$1"
|
113
|
-
elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
|
114
|
-
local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
|
115
|
-
elif [ -r "$1" ]; then
|
116
|
-
local source="$1"
|
117
|
-
fi
|
118
|
-
|
119
|
-
local record_artifact=${2:-true}
|
120
|
-
local destination="${CONFIGURATION_BUILD_DIR}"
|
121
|
-
|
122
|
-
if [ -L "${source}" ]; then
|
123
|
-
echo "Symlinked..."
|
124
|
-
source="$(readlink "${source}")"
|
125
|
-
fi
|
126
|
-
|
127
|
-
install_artifact "$source" "$destination" "$record_artifact"
|
128
|
-
|
129
|
-
if [ -d "${source}/${BCSYMBOLMAP_DIR}" ]; then
|
130
|
-
# Locate and install any .bcsymbolmaps if present
|
131
|
-
find "${source}/${BCSYMBOLMAP_DIR}/" -name "*.bcsymbolmap"|while read f; do
|
132
|
-
install_artifact "$f" "$destination" "true"
|
133
|
-
done
|
134
|
-
fi
|
135
|
-
}
|
136
|
-
|
137
|
-
install_xcframework() {
|
138
|
-
local basepath="$1"
|
139
|
-
local embed="$2"
|
140
|
-
shift
|
141
|
-
local paths=("$@")
|
142
|
-
|
143
|
-
# Locate the correct slice of the .xcframework for the current architectures
|
144
|
-
local target_path=""
|
145
|
-
local target_arch="$ARCHS"
|
146
|
-
local target_variant=""
|
147
|
-
if [[ "$PLATFORM_NAME" == *"simulator" ]]; then
|
148
|
-
target_variant="simulator"
|
149
|
-
fi
|
150
|
-
if [[ "$EFFECTIVE_PLATFORM_NAME" == *"maccatalyst" ]]; then
|
151
|
-
target_variant="maccatalyst"
|
152
|
-
fi
|
153
|
-
for i in ${!paths[@]}; do
|
154
|
-
if [[ "${paths[$i]}" == *"$target_arch"* ]] && [[ "${paths[$i]}" == *"$target_variant"* ]]; then
|
155
|
-
# Found a matching slice
|
156
|
-
echo "Selected xcframework slice ${paths[$i]}"
|
157
|
-
target_path=${paths[$i]}
|
158
|
-
break;
|
159
|
-
fi
|
160
|
-
done
|
161
|
-
|
162
|
-
if [[ -z "$target_path" ]]; then
|
163
|
-
echo "warning: [CP] Unable to find matching .xcframework slice in '${paths[@]}' for the current build architectures ($ARCHS)."
|
164
|
-
return
|
165
|
-
fi
|
166
|
-
|
167
|
-
install_framework "$basepath/$target_path" "$embed"
|
168
|
-
}
|
169
|
-
|
170
|
-
SH
|
171
|
-
contents_by_config = Hash.new do |hash, key|
|
172
|
-
hash[key] = ''
|
173
|
-
end
|
174
|
-
xcframeworks_by_config.each do |config, xcframeworks|
|
175
|
-
next if xcframeworks.empty?
|
176
|
-
xcframeworks.each do |xcframework|
|
177
|
-
slices = xcframework.slices.select { |f| f.platform.symbolic_name == platform.symbolic_name }
|
178
|
-
dynamic_slices, static_slices = slices.partition { |slice| Xcode::LinkageAnalyzer.dynamic_binary?(slice.binary_path) }
|
179
|
-
next if dynamic_slices.empty? && static_slices.empty?
|
180
|
-
unless dynamic_slices.empty?
|
181
|
-
args = install_xcframework_args(xcframework.path, dynamic_slices, false)
|
182
|
-
contents_by_config[config] << %( install_xcframework #{args}\n)
|
183
|
-
end
|
184
|
-
|
185
|
-
unless static_slices.empty?
|
186
|
-
args = install_xcframework_args(xcframework.path, static_slices, true)
|
187
|
-
contents_by_config[config] << %( install_xcframework #{args}\n)
|
188
|
-
end
|
189
|
-
|
190
|
-
dsyms = PrepareArtifactsScript.dsym_paths(xcframework.path)
|
191
|
-
dsyms.each do |path|
|
192
|
-
source = shell_escape("${PODS_ROOT}/#{path.relative_path_from(sandbox_root)}")
|
193
|
-
contents_by_config[config] << %( install_artifact #{source} "${TARGET_BUILD_DIR}" "true"\n)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
script << "\n" unless contents_by_config.empty?
|
199
|
-
contents_by_config.keys.sort.each do |config|
|
200
|
-
contents = contents_by_config[config]
|
201
|
-
next if contents.empty?
|
202
|
-
script << %(if [[ "$CONFIGURATION" == "#{config}" ]]; then\n)
|
203
|
-
script << contents
|
204
|
-
script << "fi\n"
|
205
|
-
end
|
206
|
-
|
207
|
-
script << "\necho \"Artifact list stored at $ARTIFACT_LIST_FILE\"\n"
|
208
|
-
script << "\ncat \"$ARTIFACT_LIST_FILE\"\n"
|
209
|
-
script
|
210
|
-
end
|
211
|
-
|
212
|
-
def shell_escape(value)
|
213
|
-
"\"#{value}\""
|
214
|
-
end
|
215
|
-
|
216
|
-
def install_xcframework_args(root, slices, static)
|
217
|
-
args = [shell_escape("${PODS_ROOT}/#{root.relative_path_from(sandbox_root)}")]
|
218
|
-
embed = static ? 'false' : 'true'
|
219
|
-
args << shell_escape(embed)
|
220
|
-
slices.each do |slice|
|
221
|
-
args << shell_escape(slice.path.relative_path_from(root))
|
222
|
-
end
|
223
|
-
args.join(' ')
|
224
|
-
end
|
225
|
-
|
226
|
-
class << self
|
227
|
-
# @param [Pathname] xcframework_path
|
228
|
-
# the base path of the .xcframework bundle
|
229
|
-
#
|
230
|
-
# @return [Array<Pathname>] all found .dSYM paths
|
231
|
-
#
|
232
|
-
def dsym_paths(xcframework_path)
|
233
|
-
basename = File.basename(xcframework_path, '.xcframework')
|
234
|
-
dsym_basename = basename + '.dSYMs'
|
235
|
-
path = xcframework_path.dirname + dsym_basename
|
236
|
-
return [] unless File.directory?(path)
|
237
|
-
|
238
|
-
pattern = path + '*.dSYM'
|
239
|
-
Dir.glob(pattern).map { |s| Pathname.new(s) }
|
240
|
-
end
|
241
|
-
end
|
242
|
-
end
|
243
|
-
end
|
244
|
-
end
|