pod-builder 4.4.5 → 5.0.0
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/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
|