pod-builder 4.4.5 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pod_builder/command/build.rb +0 -18
- data/lib/pod_builder/command/init.rb +1 -0
- data/lib/pod_builder/configuration.rb +11 -3
- data/lib/pod_builder/core.rb +1 -0
- data/lib/pod_builder/install.rb +1 -96
- data/lib/pod_builder/podfile.rb +13 -9
- data/lib/pod_builder/swizzles.rb +186 -0
- data/lib/pod_builder/templates/build_podfile.template +3 -4
- data/lib/pod_builder/version.rb +1 -1
- metadata +3 -3
- data/lib/pod_builder/podfile/pre_actions_swizzles.rb +0 -84
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6509579a498f83ab8b171004c0b3096a306b85b547392c2a6e16525d5f976fe9
|
4
|
+
data.tar.gz: 66bd6e1a6bf224b02ec05dbd51e5001ad0f2c29aa03baba43037e7d4616057fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbd9e59727c97c102429d4af1fe1b6a2c2e67c8b4460fd52582b6b3f0410abb6788340c3821d931d46524795a67e13102612f3444e9e44c2c4078840c13ab13e
|
7
|
+
data.tar.gz: 59ff68c1e2b9130f647d25152ad9729105ffbc55e3e77d89e0221bf6bc06da45d612d258e46f1102e0f8d1e20cdb47704c88256b4ecbf0bba33593efed8184cc
|
@@ -150,8 +150,6 @@ module PodBuilder
|
|
150
150
|
|
151
151
|
Podfile::install
|
152
152
|
|
153
|
-
sanity_checks
|
154
|
-
|
155
153
|
if (restore_file_error = restore_file_error) && Configuration.restore_enabled
|
156
154
|
puts "\n\n⚠️ Podfile.restore was found invalid and was overwritten. Error:\n #{restore_file_error}".red
|
157
155
|
end
|
@@ -263,22 +261,6 @@ module PodBuilder
|
|
263
261
|
return buildable_subspecs - pods_to_build
|
264
262
|
end
|
265
263
|
|
266
|
-
def self.sanity_checks
|
267
|
-
lines = File.read(PodBuilder::project_path("Podfile")).split("\n")
|
268
|
-
stripped_lines = lines.map { |x| Podfile.strip_line(x) }.select { |x| !x.start_with?("#")}
|
269
|
-
|
270
|
-
expected_stripped = Podfile::PRE_INSTALL_ACTIONS.map { |x| Podfile.strip_line(x) }
|
271
|
-
|
272
|
-
if !expected_stripped.all? { |x| stripped_lines.include?(x) }
|
273
|
-
warn_message = "PodBuilder's pre install actions missing from application Podfile!\n"
|
274
|
-
if OPTIONS[:allow_warnings]
|
275
|
-
puts "\n\n#{warn_message}".yellow
|
276
|
-
else
|
277
|
-
raise "\n\n#{warn_message}\n".red
|
278
|
-
end
|
279
|
-
end
|
280
|
-
end
|
281
|
-
|
282
264
|
def self.resolve_pods_to_build(argument_pods, buildable_items)
|
283
265
|
pods_to_build = []
|
284
266
|
|
@@ -31,6 +31,7 @@ module PodBuilder
|
|
31
31
|
|
32
32
|
podfile_content = File.read(prebuilt_podfile_path)
|
33
33
|
|
34
|
+
podfile_content = Podfile.add_configuration_load_block(podfile_content)
|
34
35
|
podfile_content = Podfile.add_install_block(podfile_content)
|
35
36
|
podfile_content = Podfile.update_path_entries(podfile_content, Init.method(:podfile_path_transform))
|
36
37
|
podfile_content = Podfile.update_project_entries(podfile_content, Init.method(:podfile_path_transform))
|
@@ -323,13 +323,21 @@ module PodBuilder
|
|
323
323
|
|
324
324
|
return File.join(path, Configuration.configuration_filename)
|
325
325
|
end
|
326
|
-
|
326
|
+
|
327
|
+
@@podbuilder_path_cache = nil
|
327
328
|
def self.podbuilder_path
|
329
|
+
if path = @@podbuilder_path_cache
|
330
|
+
return path
|
331
|
+
end
|
332
|
+
|
328
333
|
paths = Dir.glob("#{PodBuilder::home}/**/.pod_builder")
|
329
334
|
paths.reject! { |t| t.match(/pod-builder-.*\/Example\/#{File.basename(Configuration.base_path)}\/\.pod_builder$/i) }
|
330
335
|
raise "\n\nToo many .pod_builder found `#{paths.join("\n")}`\n".red if paths.count > 1
|
331
|
-
|
332
|
-
|
336
|
+
|
337
|
+
path = paths.count > 0 ? File.dirname(paths.first) : nil
|
338
|
+
@@podbuilder_path_cache = path
|
339
|
+
|
340
|
+
return path
|
333
341
|
end
|
334
342
|
end
|
335
343
|
end
|
data/lib/pod_builder/core.rb
CHANGED
data/lib/pod_builder/install.rb
CHANGED
@@ -1,102 +1,7 @@
|
|
1
1
|
require 'digest'
|
2
2
|
require 'colored'
|
3
3
|
require 'highline/import'
|
4
|
-
|
5
|
-
# The following begin/end clause contains a set of monkey patches of the original CP implementation
|
6
|
-
|
7
|
-
# The Pod::Target and Pod::Installer::Xcode::PodTargetDependencyInstaller swizzles patch
|
8
|
-
# the following issues:
|
9
|
-
# - https://github.com/CocoaPods/Rome/issues/81
|
10
|
-
# - https://github.com/leavez/cocoapods-binary/issues/50
|
11
|
-
begin
|
12
|
-
require 'cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb'
|
13
|
-
|
14
|
-
class Pod::Specification
|
15
|
-
Pod::Specification.singleton_class.send(:alias_method, :swz_from_hash, :from_hash)
|
16
|
-
Pod::Specification.singleton_class.send(:alias_method, :swz_from_string, :from_string)
|
17
|
-
|
18
|
-
def self.from_string(*args)
|
19
|
-
spec = swz_from_string(*args)
|
20
|
-
|
21
|
-
if overrides = PodBuilder::Configuration.spec_overrides[spec.name]
|
22
|
-
overrides.each do |k, v|
|
23
|
-
if spec.attributes_hash[k].is_a?(Hash)
|
24
|
-
current = spec.attributes_hash[k]
|
25
|
-
spec.attributes_hash[k] = current.merge(v)
|
26
|
-
else
|
27
|
-
spec.attributes_hash[k] = v
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
spec
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class Pod::Target
|
37
|
-
attr_accessor :mock_dynamic_framework
|
38
|
-
|
39
|
-
alias_method :swz_build_type, :build_type
|
40
|
-
|
41
|
-
def build_type
|
42
|
-
if mock_dynamic_framework == true
|
43
|
-
if defined?(Pod::BuildType) # CocoaPods 1.9 and later
|
44
|
-
Pod::BuildType.new(linkage: :dynamic, packaging: :framework)
|
45
|
-
elsif defined?(Pod::Target::BuildType) # CocoaPods 1.7, 1.8
|
46
|
-
Pod::Target::BuildType.new(linkage: :dynamic, packaging: :framework)
|
47
|
-
else
|
48
|
-
raise "\n\nBuildType not found. Open an issue reporting your CocoaPods version\n".red
|
49
|
-
end
|
50
|
-
else
|
51
|
-
swz_build_type()
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
class Pod::PodTarget
|
57
|
-
@@modules_override = Hash.new
|
58
|
-
|
59
|
-
def self.modules_override= (x)
|
60
|
-
@@modules_override = x
|
61
|
-
end
|
62
|
-
|
63
|
-
def self.modules_override
|
64
|
-
return @@modules_override
|
65
|
-
end
|
66
|
-
|
67
|
-
alias_method :swz_defines_module?, :defines_module?
|
68
|
-
|
69
|
-
def defines_module?
|
70
|
-
return @@modules_override.has_key?(name) ? @@modules_override[name] : swz_defines_module?
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Starting from CocoaPods 1.10.0 and later resources are no longer copied inside the .framework
|
75
|
-
# when building static frameworks. While this is correct when using CP normally, for redistributable
|
76
|
-
# frameworks we require resources to be shipped along the binary
|
77
|
-
class Pod::Installer::Xcode::PodsProjectGenerator::PodTargetInstaller
|
78
|
-
alias_method :swz_add_files_to_build_phases, :add_files_to_build_phases
|
79
|
-
|
80
|
-
def add_files_to_build_phases(native_target, test_native_targets, app_native_targets)
|
81
|
-
target.mock_dynamic_framework = target.build_as_static_framework?
|
82
|
-
swz_add_files_to_build_phases(native_target, test_native_targets, app_native_targets)
|
83
|
-
target.mock_dynamic_framework = false
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
class Pod::Installer::Xcode::PodTargetDependencyInstaller
|
88
|
-
alias_method :swz_wire_resource_bundle_targets, :wire_resource_bundle_targets
|
89
|
-
|
90
|
-
def wire_resource_bundle_targets(resource_bundle_targets, native_target, pod_target)
|
91
|
-
pod_target.mock_dynamic_framework = pod_target.build_as_static_framework?
|
92
|
-
res = swz_wire_resource_bundle_targets(resource_bundle_targets, native_target, pod_target)
|
93
|
-
pod_target.mock_dynamic_framework = false
|
94
|
-
return res
|
95
|
-
end
|
96
|
-
end
|
97
|
-
rescue LoadError
|
98
|
-
# CocoaPods 1.6.2 or earlier
|
99
|
-
end
|
4
|
+
require 'pod_builder/core'
|
100
5
|
|
101
6
|
module PodBuilder
|
102
7
|
class InstallResult
|
data/lib/pod_builder/podfile.rb
CHANGED
@@ -3,8 +3,6 @@ module PodBuilder
|
|
3
3
|
class Podfile
|
4
4
|
PODBUILDER_LOCK_ACTION = ["raise \"\\n🚨 Do not launch 'pod install' manually, use `pod_builder` instead!\\n\" if !File.exist?('pod_builder.lock')"].freeze
|
5
5
|
|
6
|
-
PRE_INSTALL_ACTIONS = ["Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}", "require 'pod_builder/podfile/pre_actions_swizzles'"].freeze
|
7
|
-
|
8
6
|
def self.from_podfile_items(items, analyzer, build_configuration, install_using_frameworks, build_catalyst, build_xcframeworks)
|
9
7
|
raise "\n\nno items\n".red unless items.count > 0
|
10
8
|
|
@@ -254,8 +252,6 @@ module PodBuilder
|
|
254
252
|
podfile_content = Podfile.update_project_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
255
253
|
podfile_content = Podfile.update_require_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
256
254
|
|
257
|
-
podfile_content = add_pre_install_actions(podfile_content)
|
258
|
-
|
259
255
|
project_podfile_path = PodBuilder::project_path("Podfile")
|
260
256
|
File.write(project_podfile_path, podfile_content)
|
261
257
|
end
|
@@ -273,8 +269,6 @@ module PodBuilder
|
|
273
269
|
podfile_content = Podfile.update_project_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
274
270
|
podfile_content = Podfile.update_require_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
275
271
|
|
276
|
-
podfile_content = add_pre_install_actions(podfile_content)
|
277
|
-
|
278
272
|
project_podfile_path = PodBuilder::project_path("Podfile")
|
279
273
|
File.write(project_podfile_path, podfile_content)
|
280
274
|
end
|
@@ -375,7 +369,9 @@ module PodBuilder
|
|
375
369
|
return
|
376
370
|
end
|
377
371
|
|
378
|
-
File.read(podfile_path)
|
372
|
+
content = File.read(podfile_path)
|
373
|
+
|
374
|
+
content.each_line do |line|
|
379
375
|
stripped_line = strip_line(line)
|
380
376
|
unless !stripped_line.start_with?("#")
|
381
377
|
next
|
@@ -386,6 +382,10 @@ module PodBuilder
|
|
386
382
|
raise "\n\nUnsupported single line def/pod. `def` and `pod` shouldn't be on the same line, please modify the following line:\n#{line}\n".red if starting_def_found
|
387
383
|
end
|
388
384
|
end
|
385
|
+
|
386
|
+
unless content.include?("PodBuilder::Configuration::load")
|
387
|
+
raise "\n\nUnsupported PodBuilder/Podfile found!\n\nStarting from version 5.x Podfile should contain the following lines:\nrequire 'pod_builder/core'\nPodBuilder::Configuration::load\n\nPlease manually add them to the top of your Podfile\n".red
|
388
|
+
end
|
389
389
|
end
|
390
390
|
|
391
391
|
def self.resolve_pod_names(names, all_buildable_items)
|
@@ -511,8 +511,12 @@ module PodBuilder
|
|
511
511
|
return add(PODBUILDER_LOCK_ACTION, "pre_install", podfile_content)
|
512
512
|
end
|
513
513
|
|
514
|
-
def self.
|
515
|
-
|
514
|
+
def self.add_configuration_load_block(podfile_content)
|
515
|
+
unless podfile_content.include?("require 'pod_builder/core")
|
516
|
+
podfile_content = "require 'pod_builder/core'\nPodBuilder::Configuration::load\n\n" + podfile_content
|
517
|
+
end
|
518
|
+
|
519
|
+
return podfile_content
|
516
520
|
end
|
517
521
|
|
518
522
|
def self.add(entries, marker, podfile_content)
|
@@ -0,0 +1,186 @@
|
|
1
|
+
require 'xcodeproj'
|
2
|
+
require 'pod_builder/core'
|
3
|
+
require 'digest'
|
4
|
+
|
5
|
+
# Skip warning
|
6
|
+
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}
|
7
|
+
|
8
|
+
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
|
9
|
+
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
|
10
|
+
|
11
|
+
# The following begin/end clause contains a set of monkey patches of the original CP implementation
|
12
|
+
|
13
|
+
# The Pod::Target and Pod::Installer::Xcode::PodTargetDependencyInstaller swizzles patch
|
14
|
+
# the following issues:
|
15
|
+
# - https://github.com/CocoaPods/Rome/issues/81
|
16
|
+
# - https://github.com/leavez/cocoapods-binary/issues/50
|
17
|
+
begin
|
18
|
+
require 'cocoapods/installer/xcode/pods_project_generator/pod_target_dependency_installer.rb'
|
19
|
+
|
20
|
+
class Pod::Specification
|
21
|
+
Pod::Specification.singleton_class.send(:alias_method, :swz_from_hash, :from_hash)
|
22
|
+
Pod::Specification.singleton_class.send(:alias_method, :swz_from_string, :from_string)
|
23
|
+
|
24
|
+
def self.from_string(*args)
|
25
|
+
spec = swz_from_string(*args)
|
26
|
+
|
27
|
+
if overrides = PodBuilder::Configuration.spec_overrides[spec.name]
|
28
|
+
overrides.each do |k, v|
|
29
|
+
if spec.attributes_hash[k].is_a?(Hash)
|
30
|
+
current = spec.attributes_hash[k]
|
31
|
+
spec.attributes_hash[k] = current.merge(v)
|
32
|
+
else
|
33
|
+
spec.attributes_hash[k] = v
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
spec
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class Pod::Target
|
43
|
+
attr_accessor :mock_dynamic_framework
|
44
|
+
|
45
|
+
alias_method :swz_build_type, :build_type
|
46
|
+
|
47
|
+
def build_type
|
48
|
+
if mock_dynamic_framework == true
|
49
|
+
if defined?(Pod::BuildType) # CocoaPods 1.9 and later
|
50
|
+
Pod::BuildType.new(linkage: :dynamic, packaging: :framework)
|
51
|
+
elsif defined?(Pod::Target::BuildType) # CocoaPods 1.7, 1.8
|
52
|
+
Pod::Target::BuildType.new(linkage: :dynamic, packaging: :framework)
|
53
|
+
else
|
54
|
+
raise "\n\nBuildType not found. Open an issue reporting your CocoaPods version\n".red
|
55
|
+
end
|
56
|
+
else
|
57
|
+
swz_build_type()
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class Pod::PodTarget
|
63
|
+
@@modules_override = Hash.new
|
64
|
+
|
65
|
+
def self.modules_override= (x)
|
66
|
+
@@modules_override = x
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.modules_override
|
70
|
+
return @@modules_override
|
71
|
+
end
|
72
|
+
|
73
|
+
alias_method :swz_defines_module?, :defines_module?
|
74
|
+
|
75
|
+
def defines_module?
|
76
|
+
return @@modules_override.has_key?(name) ? @@modules_override[name] : swz_defines_module?
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Starting from CocoaPods 1.10.0 and later resources are no longer copied inside the .framework
|
81
|
+
# when building static frameworks. While this is correct when using CP normally, for redistributable
|
82
|
+
# frameworks we require resources to be shipped along the binary
|
83
|
+
class Pod::Installer::Xcode::PodsProjectGenerator::PodTargetInstaller
|
84
|
+
alias_method :swz_add_files_to_build_phases, :add_files_to_build_phases
|
85
|
+
|
86
|
+
def add_files_to_build_phases(native_target, test_native_targets, app_native_targets)
|
87
|
+
target.mock_dynamic_framework = target.build_as_static_framework?
|
88
|
+
swz_add_files_to_build_phases(native_target, test_native_targets, app_native_targets)
|
89
|
+
target.mock_dynamic_framework = false
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
class Pod::Installer::Xcode::PodTargetDependencyInstaller
|
94
|
+
alias_method :swz_wire_resource_bundle_targets, :wire_resource_bundle_targets
|
95
|
+
|
96
|
+
def wire_resource_bundle_targets(resource_bundle_targets, native_target, pod_target)
|
97
|
+
pod_target.mock_dynamic_framework = pod_target.build_as_static_framework?
|
98
|
+
res = swz_wire_resource_bundle_targets(resource_bundle_targets, native_target, pod_target)
|
99
|
+
pod_target.mock_dynamic_framework = false
|
100
|
+
return res
|
101
|
+
end
|
102
|
+
end
|
103
|
+
rescue LoadError
|
104
|
+
# CocoaPods 1.6.2 or earlier
|
105
|
+
end
|
106
|
+
|
107
|
+
class Pod::Generator::FileList
|
108
|
+
alias_method :swz_initialize, :initialize
|
109
|
+
|
110
|
+
def initialize(paths)
|
111
|
+
paths.uniq!
|
112
|
+
swz_initialize(paths)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
class Pod::Generator::CopyXCFrameworksScript
|
117
|
+
alias_method :swz_initialize, :initialize
|
118
|
+
|
119
|
+
def initialize(xcframeworks, sandbox_root, platform)
|
120
|
+
xcframeworks.uniq! { |t| t.path }
|
121
|
+
swz_initialize(xcframeworks, sandbox_root, platform)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
class Pod::Generator::EmbedFrameworksScript
|
126
|
+
alias_method :swz_initialize, :initialize
|
127
|
+
|
128
|
+
def initialize(*args)
|
129
|
+
raise "\n\nUnsupported CocoaPods version\n".red if (args.count == 0 || args.count > 2)
|
130
|
+
|
131
|
+
frameworks_by_config = args[0]
|
132
|
+
frameworks_by_config.keys.each do |key|
|
133
|
+
items = frameworks_by_config[key]
|
134
|
+
items.uniq! { |t| t.source_path }
|
135
|
+
frameworks_by_config[key] = items
|
136
|
+
end
|
137
|
+
|
138
|
+
if args.count == 2
|
139
|
+
# CocoaPods 1.10.0 and newer
|
140
|
+
xcframeworks_by_config = args[1]
|
141
|
+
xcframeworks_by_config.keys.each do |key|
|
142
|
+
items = xcframeworks_by_config[key]
|
143
|
+
items.uniq! { |t| t.path }
|
144
|
+
xcframeworks_by_config[key] = items
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
swz_initialize(*args)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
class Pod::Generator::CopyResourcesScript
|
153
|
+
alias_method :swz_initialize, :initialize
|
154
|
+
|
155
|
+
def initialize(resources_by_config, platform)
|
156
|
+
resources_by_config.keys.each do |key|
|
157
|
+
items = resources_by_config[key]
|
158
|
+
items.uniq!
|
159
|
+
|
160
|
+
colliding_resources = items.group_by { |t| File.basename(t) }.values.select { |t| t.count > 1 }
|
161
|
+
|
162
|
+
unless colliding_resources.empty?
|
163
|
+
message = ""
|
164
|
+
colliding_resources.each do |resources|
|
165
|
+
resources.map! { |t| File.expand_path(t.gsub("${PODS_ROOT}", "#{Dir.pwd}/Pods")) }
|
166
|
+
# check that files are identical.
|
167
|
+
# For files with paths that are resolved (e.g containing ${PODS_ROOT}) we use the file hash
|
168
|
+
# we fallback to the filename for the others
|
169
|
+
hashes = resources.map { |t| File.exists?(t) ? Digest::MD5.hexdigest(File.read(t)) : File.basename(t) }
|
170
|
+
if hashes.uniq.count > 1
|
171
|
+
message += resources.join("\n") + "\n"
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
unless message.empty?
|
176
|
+
message = "\n\nThe following resources have the same name and will collide once copied into application bundle:\n" + message
|
177
|
+
raise message
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
resources_by_config[key] = items
|
182
|
+
end
|
183
|
+
|
184
|
+
swz_initialize(resources_by_config, platform)
|
185
|
+
end
|
186
|
+
end
|
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'cfpropertylist'
|
2
|
+
require 'pod_builder/core'
|
3
|
+
|
4
|
+
PodBuilder::Configuration::load
|
2
5
|
|
3
6
|
%%%sources%%%
|
4
7
|
|
@@ -63,10 +66,6 @@ pre_install do |installer|
|
|
63
66
|
# set a random version to please CocoaPods, the proper version will be overridden by set_build_settings()
|
64
67
|
target.root_spec.swift_version = "1.0"
|
65
68
|
end
|
66
|
-
|
67
|
-
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
|
68
|
-
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
|
69
|
-
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}
|
70
69
|
end
|
71
70
|
|
72
71
|
post_install do |installer|
|
data/lib/pod_builder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pod-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Camin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -206,12 +206,12 @@ files:
|
|
206
206
|
- lib/pod_builder/install.rb
|
207
207
|
- lib/pod_builder/licenses.rb
|
208
208
|
- lib/pod_builder/podfile.rb
|
209
|
-
- lib/pod_builder/podfile/pre_actions_swizzles.rb
|
210
209
|
- lib/pod_builder/podfile_cp.rb
|
211
210
|
- lib/pod_builder/podfile_item.rb
|
212
211
|
- lib/pod_builder/podspec.rb
|
213
212
|
- lib/pod_builder/rome/post_install.rb
|
214
213
|
- lib/pod_builder/rome/pre_install.rb
|
214
|
+
- lib/pod_builder/swizzles.rb
|
215
215
|
- lib/pod_builder/templates/build_podfile.template
|
216
216
|
- lib/pod_builder/templates/build_podspec.template
|
217
217
|
- lib/pod_builder/version.rb
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'xcodeproj'
|
2
|
-
require 'pod_builder/core'
|
3
|
-
require 'digest'
|
4
|
-
|
5
|
-
class Pod::Generator::FileList
|
6
|
-
alias_method :swz_initialize, :initialize
|
7
|
-
|
8
|
-
def initialize(paths)
|
9
|
-
paths.uniq!
|
10
|
-
swz_initialize(paths)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Pod::Generator::CopyXCFrameworksScript
|
15
|
-
alias_method :swz_initialize, :initialize
|
16
|
-
|
17
|
-
def initialize(xcframeworks, sandbox_root, platform)
|
18
|
-
xcframeworks.uniq! { |t| t.path }
|
19
|
-
swz_initialize(xcframeworks, sandbox_root, platform)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class Pod::Generator::EmbedFrameworksScript
|
24
|
-
alias_method :swz_initialize, :initialize
|
25
|
-
|
26
|
-
def initialize(*args)
|
27
|
-
raise "\n\nUnsupported CocoaPods version\n".red if (args.count == 0 || args.count > 2)
|
28
|
-
|
29
|
-
frameworks_by_config = args[0]
|
30
|
-
frameworks_by_config.keys.each do |key|
|
31
|
-
items = frameworks_by_config[key]
|
32
|
-
items.uniq! { |t| t.source_path }
|
33
|
-
frameworks_by_config[key] = items
|
34
|
-
end
|
35
|
-
|
36
|
-
if args.count == 2
|
37
|
-
# CocoaPods 1.10.0 and newer
|
38
|
-
xcframeworks_by_config = args[1]
|
39
|
-
xcframeworks_by_config.keys.each do |key|
|
40
|
-
items = xcframeworks_by_config[key]
|
41
|
-
items.uniq! { |t| t.path }
|
42
|
-
xcframeworks_by_config[key] = items
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
swz_initialize(*args)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
class Pod::Generator::CopyResourcesScript
|
51
|
-
alias_method :swz_initialize, :initialize
|
52
|
-
|
53
|
-
def initialize(resources_by_config, platform)
|
54
|
-
resources_by_config.keys.each do |key|
|
55
|
-
items = resources_by_config[key]
|
56
|
-
items.uniq!
|
57
|
-
|
58
|
-
colliding_resources = items.group_by { |t| File.basename(t) }.values.select { |t| t.count > 1 }
|
59
|
-
|
60
|
-
unless colliding_resources.empty?
|
61
|
-
message = ""
|
62
|
-
colliding_resources.each do |resources|
|
63
|
-
resources.map! { |t| File.expand_path(t.gsub("${PODS_ROOT}", "#{Dir.pwd}/Pods")) }
|
64
|
-
# check that files are identical.
|
65
|
-
# For files with paths that are resolved (e.g containing ${PODS_ROOT}) we use the file hash
|
66
|
-
# we fallback to the filename for the others
|
67
|
-
hashes = resources.map { |t| File.exists?(t) ? Digest::MD5.hexdigest(File.read(t)) : File.basename(t) }
|
68
|
-
if hashes.uniq.count > 1
|
69
|
-
message += resources.join("\n") + "\n"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
unless message.empty?
|
74
|
-
message = "\n\nThe following resources have the same name and will collide once copied into application bundle:\n" + message
|
75
|
-
raise message
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
resources_by_config[key] = items
|
80
|
-
end
|
81
|
-
|
82
|
-
swz_initialize(resources_by_config, platform)
|
83
|
-
end
|
84
|
-
end
|