pod-builder 2.0.0.beta.18 ā 2.0.0.beta.24
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/.gitignore +2 -2
- data/README.md +13 -13
- data/exe/pod_builder +27 -16
- data/lib/pod_builder/command/build.rb +28 -159
- data/lib/pod_builder/command/build_all.rb +2 -2
- data/lib/pod_builder/command/clean.rb +34 -53
- data/lib/pod_builder/command/clear_lldbinit.rb +6 -2
- data/lib/pod_builder/command/deintegrate.rb +27 -6
- data/lib/pod_builder/command/generate_lfs.rb +1 -1
- data/lib/pod_builder/command/generate_podspec.rb +3 -2
- data/lib/pod_builder/command/info.rb +1 -1
- data/lib/pod_builder/command/init.rb +39 -14
- data/lib/pod_builder/command/install_sources.rb +20 -13
- data/lib/pod_builder/command/none.rb +2 -2
- data/lib/pod_builder/command/restore_all.rb +4 -4
- data/lib/pod_builder/command/switch.rb +56 -14
- data/lib/pod_builder/command/sync_podfile.rb +3 -2
- data/lib/pod_builder/command/update.rb +5 -6
- data/lib/pod_builder/command/update_lldbinit.rb +10 -8
- data/lib/pod_builder/configuration.rb +27 -6
- data/lib/pod_builder/core.rb +52 -16
- data/lib/pod_builder/info.rb +11 -11
- data/lib/pod_builder/install.rb +202 -186
- data/lib/pod_builder/licenses.rb +4 -4
- data/lib/pod_builder/podfile.rb +243 -85
- data/lib/pod_builder/podfile/post_actions.rb +9 -14
- data/lib/pod_builder/podfile_cp.rb +93 -0
- data/lib/pod_builder/podfile_item.rb +41 -20
- data/lib/pod_builder/podspec.rb +33 -16
- data/lib/pod_builder/rome/post_install.rb +121 -129
- data/lib/pod_builder/rome/pre_install.rb +1 -1
- data/lib/pod_builder/templates/build_podfile.template +2 -2
- data/lib/pod_builder/version.rb +1 -1
- data/pod-builder.gemspec +2 -2
- metadata +4 -25
- data/Example/Frameworks/.gitignore +0 -6
- data/Example/Frameworks/.pod_builder/pod_builder +0 -0
- data/Example/Frameworks/PodBuilder.json +0 -38
- data/Example/Frameworks/Podfile +0 -23
- data/Example/Frameworks/Podfile.restore +0 -40
- data/Example/PodBuilderExample.xcodeproj/project.pbxproj +0 -411
- data/Example/PodBuilderExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/Example/PodBuilderExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/Example/PodBuilderExample.xcodeproj/project.xcworkspace/xcuserdata/tomas.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/Example/PodBuilderExample.xcworkspace/contents.xcworkspacedata +0 -10
- data/Example/PodBuilderExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/Example/PodBuilderExample/AppDelegate.swift +0 -51
- data/Example/PodBuilderExample/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
- data/Example/PodBuilderExample/Assets.xcassets/Contents.json +0 -6
- data/Example/PodBuilderExample/Base.lproj/LaunchScreen.storyboard +0 -25
- data/Example/PodBuilderExample/Base.lproj/Main.storyboard +0 -24
- data/Example/PodBuilderExample/Info.plist +0 -45
- data/Example/PodBuilderExample/ViewController.swift +0 -25
- data/Example/Podfile +0 -51
- data/Example/Podfile.lock +0 -435
- data/Example/Pods-acknowledgements.md +0 -210
- data/Example/Pods-acknowledgements.plist +0 -206
data/lib/pod_builder/licenses.rb
CHANGED
@@ -12,19 +12,19 @@
|
|
12
12
|
|
13
13
|
if current_licenses.count > 0
|
14
14
|
licenses_header = current_licenses.shift
|
15
|
-
raise "
|
15
|
+
raise "\n\nUnexpected license found in header".red if licenses_header.has_key?("License")
|
16
16
|
end
|
17
17
|
if current_licenses.count > 0
|
18
18
|
license_footer = current_licenses.pop
|
19
|
-
raise "
|
19
|
+
raise "\n\nUnexpected license found in footer".red if license_footer.has_key?("License")
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
if licenses.count > 0
|
24
24
|
licenses_header = licenses.shift
|
25
|
-
raise "
|
25
|
+
raise "\n\nUnexpected license found in header".red if licenses_header.has_key?("License")
|
26
26
|
license_footer = licenses.pop
|
27
|
-
raise "
|
27
|
+
raise "\n\nUnexpected license found in footer".red if license_footer.has_key?("License")
|
28
28
|
|
29
29
|
lincenses_titles = licenses.map { |x| x["Title"] }
|
30
30
|
current_licenses.select! { |x| !lincenses_titles.include?(x["Title"]) }
|
data/lib/pod_builder/podfile.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
+
require 'json'
|
1
2
|
module PodBuilder
|
2
3
|
class Podfile
|
3
4
|
PODBUILDER_LOCK_ACTION = ["raise \"\\nšØ Do not launch 'pod install' manually, use `pod_builder` instead!\\n\" if !File.exist?('pod_builder.lock')"].freeze
|
4
|
-
POST_INSTALL_ACTIONS = ["require 'pod_builder/podfile/post_actions'", "PodBuilder::Podfile::
|
5
|
+
POST_INSTALL_ACTIONS = ["require 'pod_builder/podfile/post_actions'", "PodBuilder::Podfile::pod_builder_post_process"].freeze
|
5
6
|
|
6
7
|
PRE_INSTALL_ACTIONS = ["Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}"].freeze
|
7
8
|
private_constant :PRE_INSTALL_ACTIONS
|
8
9
|
|
9
10
|
def self.from_podfile_items(items, analyzer, build_configuration)
|
10
|
-
raise "
|
11
|
+
raise "\n\nno items".red unless items.count > 0
|
11
12
|
|
12
13
|
sources = analyzer.sources
|
13
14
|
|
@@ -15,6 +16,11 @@ module PodBuilder
|
|
15
16
|
podfile = File.read("#{cwd}/templates/build_podfile.template")
|
16
17
|
|
17
18
|
platform = analyzer.instance_variable_get("@result").targets.first.platform
|
19
|
+
|
20
|
+
install_using_frameworks = install_using_frameworks(analyzer)
|
21
|
+
|
22
|
+
podfile.sub!("%%%use_frameworks%%%", install_using_frameworks ? "use_frameworks!" : "")
|
23
|
+
|
18
24
|
podfile.sub!("%%%platform_name%%%", platform.name.to_s)
|
19
25
|
podfile.sub!("%%%deployment_version%%%", platform.deployment_target.version)
|
20
26
|
|
@@ -49,7 +55,7 @@ module PodBuilder
|
|
49
55
|
|
50
56
|
if Configuration.build_system == "Legacy"
|
51
57
|
build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = "NO"
|
52
|
-
raise "\n\nCan't enable library evolution support with legacy build system!" if Configuration.library_evolution_support
|
58
|
+
raise "\n\nCan't enable library evolution support with legacy build system!".red if Configuration.library_evolution_support
|
53
59
|
elsif Configuration.library_evolution_support
|
54
60
|
build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = "YES"
|
55
61
|
end
|
@@ -151,7 +157,11 @@ module PodBuilder
|
|
151
157
|
File.write(podfile_restore_path, podfile_content.join("\n"))
|
152
158
|
end
|
153
159
|
|
154
|
-
def self.write_prebuilt(all_buildable_items, analyzer)
|
160
|
+
def self.write_prebuilt(all_buildable_items, analyzer)
|
161
|
+
if Configuration.react_native_project
|
162
|
+
return write_prebuilt_react_native(all_buildable_items, analyzer)
|
163
|
+
end
|
164
|
+
|
155
165
|
puts "Updating Application Podfile".yellow
|
156
166
|
|
157
167
|
explicit_deps = analyzer.explicit_pods()
|
@@ -171,45 +181,33 @@ module PodBuilder
|
|
171
181
|
next
|
172
182
|
end
|
173
183
|
|
174
|
-
if pod_name = pod_definition_in(line, true)
|
184
|
+
if pod_name = pod_definition_in(line, true)
|
175
185
|
if podfile_item = all_buildable_items.detect { |x| x.name == pod_name }
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
item
|
195
|
-
else
|
196
|
-
item = all_buildable_items.detect { |t| x == t.root_name }
|
197
|
-
end
|
198
|
-
}.compact
|
199
|
-
|
200
|
-
non_explicit_dependencies.each do |dep|
|
201
|
-
dep_item = all_buildable_items.detect { |x| x.name == dep.name }
|
202
|
-
|
203
|
-
if Podspec.include?(dep_item.root_name)
|
204
|
-
pod_name = dep_item.prebuilt_entry(false)
|
205
|
-
pod_name.gsub!(dep.name, dep.root_name)
|
206
|
-
prebuilt_lines.push("#{line.detect_indentation}#{pod_name}#{marker}\n")
|
207
|
-
end
|
208
|
-
|
209
|
-
explicit_deps.push(dep)
|
210
|
-
end
|
186
|
+
marker = podfile_item.prebuilt_marker()
|
187
|
+
|
188
|
+
non_explicit_dependencies = podfile_item.recursive_dependencies(all_buildable_items) - explicit_deps
|
189
|
+
non_explicit_dependencies_root_names = non_explicit_dependencies.map(&:root_name).uniq.filter { |t| t != podfile_item.root_name }
|
190
|
+
non_explicit_dependencies = non_explicit_dependencies_root_names.map { |x|
|
191
|
+
if item = all_buildable_items.detect { |t| x == t.name }
|
192
|
+
item
|
193
|
+
else
|
194
|
+
item = all_buildable_items.detect { |t| x == t.root_name }
|
195
|
+
end
|
196
|
+
}.compact
|
197
|
+
|
198
|
+
non_explicit_dependencies.each do |dep|
|
199
|
+
dep_item = all_buildable_items.detect { |x| x.name == dep.name }
|
200
|
+
|
201
|
+
if File.exist?(dep_item.prebuilt_podspec_path) && !dep_item.is_prebuilt
|
202
|
+
pod_name = dep_item.prebuilt_entry(false, false)
|
203
|
+
prebuilt_lines.push("#{line.detect_indentation}#{pod_name}#{marker}\n")
|
211
204
|
end
|
212
205
|
|
206
|
+
explicit_deps.push(dep)
|
207
|
+
end
|
208
|
+
|
209
|
+
if File.exist?(podfile_item.prebuilt_podspec_path) && !podfile_item.is_prebuilt
|
210
|
+
prebuilt_lines.push("#{line.detect_indentation}#{podfile_item.prebuilt_entry}\n")
|
213
211
|
next
|
214
212
|
end
|
215
213
|
end
|
@@ -218,13 +216,37 @@ module PodBuilder
|
|
218
216
|
prebuilt_lines.push(line)
|
219
217
|
end
|
220
218
|
|
219
|
+
podfile_content = prebuilt_lines.join
|
220
|
+
|
221
|
+
podfile_content = Podfile.update_path_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
222
|
+
podfile_content = Podfile.update_project_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
223
|
+
podfile_content = Podfile.update_require_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
224
|
+
|
225
|
+
podfile_content = add_pre_install_actions(podfile_content)
|
226
|
+
podfile_content = add_post_install_checks(podfile_content)
|
227
|
+
|
221
228
|
project_podfile_path = PodBuilder::project_path("Podfile")
|
222
|
-
File.write(project_podfile_path,
|
223
|
-
|
224
|
-
|
229
|
+
File.write(project_podfile_path, podfile_content)
|
230
|
+
end
|
231
|
+
|
232
|
+
def self.write_prebuilt_react_native(all_buildable_items, analyzer)
|
233
|
+
puts "Updating Application Podfile".yellow
|
225
234
|
|
226
|
-
|
227
|
-
|
235
|
+
podbuilder_podfile_path = PodBuilder::basepath("Podfile")
|
236
|
+
rel_path = Pathname.new(podbuilder_podfile_path).relative_path_from(Pathname.new(PodBuilder::project_path)).to_s
|
237
|
+
|
238
|
+
podfile_content = ["# Autogenerated by PodBuilder (https://github.com/Subito-it/PodBuilder)\n", "# Any change to this file should be done on #{rel_path}\n", "\n"].join
|
239
|
+
podfile_content += analyzer.podfile.pb_to_s(all_buildable_items)
|
240
|
+
|
241
|
+
podfile_content = Podfile.update_path_entries(podfile_content, PodfileCP.method(:podfile_path_transform))
|
242
|
+
podfile_content = Podfile.update_project_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
243
|
+
podfile_content = Podfile.update_require_entries(podfile_content, Podfile.method(:podfile_path_transform))
|
244
|
+
|
245
|
+
podfile_content = add_pre_install_actions(podfile_content)
|
246
|
+
podfile_content = add_post_install_checks(podfile_content)
|
247
|
+
|
248
|
+
project_podfile_path = PodBuilder::project_path("Podfile")
|
249
|
+
File.write(project_podfile_path, podfile_content)
|
228
250
|
end
|
229
251
|
|
230
252
|
def self.install
|
@@ -241,10 +263,6 @@ module PodBuilder
|
|
241
263
|
return stripped_line.gsub("\"", "'").gsub(" ", "").gsub("\t", "").gsub("\n", "")
|
242
264
|
end
|
243
265
|
|
244
|
-
def self.add_install_block(podfile_path)
|
245
|
-
add(PODBUILDER_LOCK_ACTION, "pre_install", podfile_path)
|
246
|
-
end
|
247
|
-
|
248
266
|
def self.pod_definition_in(line, include_commented)
|
249
267
|
stripped_line = strip_line(line)
|
250
268
|
matches = stripped_line.match(/(^pod')(.*?)(')/)
|
@@ -330,7 +348,7 @@ module PodBuilder
|
|
330
348
|
|
331
349
|
if stripped_line.match(/(pod')(.*?)(')/) != nil
|
332
350
|
starting_def_found = stripped_line.start_with?("def") && (line.match("\s*def\s") != nil)
|
333
|
-
raise "
|
351
|
+
raise "\n\nUnsupported single line def/pod. `def` and `pod` shouldn't be on the same line, please modify the following line:\n#{line}".red if starting_def_found
|
334
352
|
end
|
335
353
|
end
|
336
354
|
end
|
@@ -369,9 +387,23 @@ module PodBuilder
|
|
369
387
|
|
370
388
|
private
|
371
389
|
|
372
|
-
def self.
|
373
|
-
|
390
|
+
def self.podfile_path_transform(path)
|
391
|
+
use_absolute_paths = false
|
392
|
+
podfile_path = PodBuilder::project_path("Podfile")
|
393
|
+
original_basepath = PodBuilder::basepath
|
394
|
+
|
395
|
+
podfile_base_path = Pathname.new(File.dirname(podfile_path))
|
396
|
+
|
397
|
+
original_path = Pathname.new(File.join(original_basepath, path))
|
398
|
+
replace_path = original_path.relative_path_from(podfile_base_path)
|
399
|
+
if use_absolute_paths
|
400
|
+
replace_path = replace_path.expand_path(podfile_base_path)
|
401
|
+
end
|
374
402
|
|
403
|
+
return replace_path
|
404
|
+
end
|
405
|
+
|
406
|
+
def self.indentation_from_string(content)
|
375
407
|
lines = content.split("\n").select { |x| !x.empty? }
|
376
408
|
|
377
409
|
if lines.count > 2
|
@@ -392,13 +424,13 @@ module PodBuilder
|
|
392
424
|
def self.project_swift_version(analyzer)
|
393
425
|
swift_versions = analyzer.instance_variable_get("@result").targets.map { |x| x.target_definition.swift_version }.compact.uniq
|
394
426
|
|
395
|
-
raise "
|
427
|
+
raise "\n\nFound different Swift versions in targets. Expecting one, got `#{swift_versions}`".red if swift_versions.count > 1
|
396
428
|
|
397
429
|
return swift_versions.first || PodBuilder::system_swift_version
|
398
430
|
end
|
399
431
|
|
400
432
|
def self.podfile_items_at(podfile_path, include_prebuilt = false)
|
401
|
-
raise "
|
433
|
+
raise "\n\nExpecting basepath folder!".red if !File.exist?(PodBuilder::basepath("Podfile"))
|
402
434
|
|
403
435
|
if File.basename(podfile_path) != "Podfile"
|
404
436
|
File.rename(PodBuilder::basepath("Podfile"), PodBuilder::basepath("Podfile.tmp"))
|
@@ -427,18 +459,20 @@ module PodBuilder
|
|
427
459
|
return buildable_items
|
428
460
|
end
|
429
461
|
|
430
|
-
def self.
|
431
|
-
add(
|
462
|
+
def self.add_install_block(podfile_content)
|
463
|
+
return add(PODBUILDER_LOCK_ACTION, "pre_install", podfile_content)
|
432
464
|
end
|
433
465
|
|
434
|
-
def self.
|
435
|
-
add(
|
466
|
+
def self.add_pre_install_actions(podfile_content)
|
467
|
+
return add(PRE_INSTALL_ACTIONS + [" "], "pre_install", podfile_content)
|
436
468
|
end
|
437
469
|
|
438
|
-
def self.
|
439
|
-
|
470
|
+
def self.add_post_install_checks(podfile_content)
|
471
|
+
return add(POST_INSTALL_ACTIONS + [" "], "post_install", podfile_content)
|
472
|
+
end
|
440
473
|
|
441
|
-
|
474
|
+
def self.add(entries, marker, podfile_content)
|
475
|
+
file_indentation = indentation_from_string(podfile_content)
|
442
476
|
|
443
477
|
entries = entries.map { |x| "#{file_indentation}#{x}\n"}
|
444
478
|
|
@@ -455,28 +489,28 @@ module PodBuilder
|
|
455
489
|
end
|
456
490
|
|
457
491
|
if !marker_found
|
492
|
+
if podfile_lines.last.strip.length > 0
|
493
|
+
podfile_lines.push("\n")
|
494
|
+
end
|
458
495
|
podfile_lines.push("\n#{marker} do |installer|\n")
|
459
496
|
podfile_lines.push(entries)
|
460
497
|
podfile_lines.push("end\n")
|
461
498
|
end
|
462
499
|
|
463
|
-
|
500
|
+
return podfile_lines.join
|
464
501
|
end
|
465
502
|
|
466
|
-
def self.
|
467
|
-
|
468
|
-
|
469
|
-
base_path = Pathname.new(File.dirname(podfile_path))
|
470
|
-
regex = "(\s*pod\s*['|\"])(.*?)(['|\"])(.*?)(:path\s*=>\s*['|\"])(.*?)(['|\"])"
|
503
|
+
def self.update_path_entries(podfile_content, path_transform)
|
504
|
+
regex = "(\s*pod\s*['|\"])(.*?)(['|\"])(.*?):(path|podspec)(\s*=>\s*['|\"])(.*?)(['|\"])"
|
471
505
|
|
472
506
|
podfile_lines = []
|
473
507
|
podfile_content.each_line do |line|
|
474
508
|
stripped_line = strip_line(line)
|
475
509
|
matches = line.match(/#{regex}/)
|
476
510
|
|
477
|
-
if matches&.size ==
|
511
|
+
if matches&.size == 9 && !stripped_line.start_with?("#")
|
478
512
|
pod_name = matches[2]
|
479
|
-
path = matches[
|
513
|
+
path = matches[7]
|
480
514
|
|
481
515
|
is_absolute = ["~", "/"].include?(path[0])
|
482
516
|
unless !PodBuilder::prebuiltpath.end_with?(path) && !is_absolute
|
@@ -484,26 +518,19 @@ module PodBuilder
|
|
484
518
|
next
|
485
519
|
end
|
486
520
|
|
487
|
-
|
488
|
-
replace_path = original_path.relative_path_from(base_path)
|
489
|
-
if use_absolute_paths
|
490
|
-
replace_path = replace_path.expand_path(base_path)
|
491
|
-
end
|
521
|
+
replace_path = path_transform.call(path)
|
492
522
|
|
493
|
-
updated_path_line = line.gsub(/#{regex}/, '\1\2\3\4\
|
523
|
+
updated_path_line = line.gsub(/#{regex}/, '\1\2\3\4:\5\6' + replace_path.to_s + '\8\9')
|
494
524
|
podfile_lines.push(updated_path_line)
|
495
525
|
else
|
496
526
|
podfile_lines.push(line)
|
497
527
|
end
|
498
528
|
end
|
499
529
|
|
500
|
-
|
530
|
+
return podfile_lines.join
|
501
531
|
end
|
502
532
|
|
503
|
-
def self.update_project_entries(
|
504
|
-
podfile_content = File.read(podfile_path)
|
505
|
-
|
506
|
-
base_path = Pathname.new(File.dirname(podfile_path))
|
533
|
+
def self.update_project_entries(podfile_content, path_transform)
|
507
534
|
regex = "(\s*project\s*['|\"])(.*?)(['|\"])"
|
508
535
|
|
509
536
|
podfile_lines = []
|
@@ -520,11 +547,36 @@ module PodBuilder
|
|
520
547
|
next
|
521
548
|
end
|
522
549
|
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
550
|
+
replace_path = path_transform.call(path)
|
551
|
+
|
552
|
+
updated_path_line = line.gsub(/#{regex}/, '\1' + replace_path.to_s + '\3\4')
|
553
|
+
podfile_lines.push(updated_path_line)
|
554
|
+
else
|
555
|
+
podfile_lines.push(line)
|
556
|
+
end
|
557
|
+
end
|
558
|
+
|
559
|
+
return podfile_lines.join
|
560
|
+
end
|
561
|
+
|
562
|
+
def self.update_require_entries(podfile_content, path_transform)
|
563
|
+
regex = "(\s*require_relative\s*['|\"])(.*?)(['|\"])"
|
564
|
+
|
565
|
+
podfile_lines = []
|
566
|
+
podfile_content.each_line do |line|
|
567
|
+
stripped_line = strip_line(line)
|
568
|
+
matches = line.match(/#{regex}/)
|
569
|
+
|
570
|
+
if matches&.size == 4 && !stripped_line.start_with?("#")
|
571
|
+
path = matches[2]
|
572
|
+
|
573
|
+
is_absolute = ["~", "/"].include?(path[0])
|
574
|
+
unless !is_absolute
|
575
|
+
podfile_lines.push(line)
|
576
|
+
next
|
527
577
|
end
|
578
|
+
|
579
|
+
replace_path = path_transform.call(path)
|
528
580
|
|
529
581
|
updated_path_line = line.gsub(/#{regex}/, '\1' + replace_path.to_s + '\3\4')
|
530
582
|
podfile_lines.push(updated_path_line)
|
@@ -533,7 +585,113 @@ module PodBuilder
|
|
533
585
|
end
|
534
586
|
end
|
535
587
|
|
536
|
-
|
588
|
+
return podfile_lines.join
|
589
|
+
end
|
590
|
+
|
591
|
+
def self.prepare_for_react_native_write_pb_configuration(podfile_content)
|
592
|
+
base = File.expand_path(File.join(PodBuilder::project_path, ".."))
|
593
|
+
bin_js = Dir.glob("#{base}/node_modules/@react-native-community/cli/build/bin.js")
|
594
|
+
|
595
|
+
raise "\n\nReact native cli bin_js not found!".red unless bin_js.count == 1
|
596
|
+
bin_js = bin_js.first
|
597
|
+
|
598
|
+
config_dest_path = PodBuilder::basepath("rn_config.json")
|
599
|
+
|
600
|
+
raise "\n\nFailed generating react native configuration file".red unless system("node '#{bin_js}' config > #{config_dest_path}")
|
601
|
+
|
602
|
+
content = File.read(config_dest_path)
|
603
|
+
|
604
|
+
content.gsub!(PodBuilder::project_path, "..")
|
605
|
+
content.gsub!(File.expand_path(PodBuilder::project_path("..")), "../..")
|
606
|
+
|
607
|
+
json = JSON.parse(content)
|
608
|
+
begin
|
609
|
+
json["project"]["ios"]["sourceDir"] = "./"
|
610
|
+
json["project"]["ios"]["podfile"] = "./"
|
611
|
+
rescue => exception
|
612
|
+
raise "\n\nFailed updating react native configuration json".red
|
613
|
+
end
|
614
|
+
|
615
|
+
File.write(config_dest_path, JSON.pretty_generate(json))
|
616
|
+
|
617
|
+
return "rn_config = JSON.load(File.read(\"rn_config.json\")) # pb added\n\n" + podfile_content
|
618
|
+
end
|
619
|
+
|
620
|
+
def self.prepare_for_react_native_rn_pods_file(podfile_content)
|
621
|
+
lines = []
|
622
|
+
podfile_content.each_line do |line|
|
623
|
+
if line.include?("use_react_native!")
|
624
|
+
matches = line.match(/(\s*)/)
|
625
|
+
unless matches&.size == 2
|
626
|
+
return podfile_content
|
627
|
+
end
|
628
|
+
|
629
|
+
indentation = matches[1]
|
630
|
+
lines.push("#{indentation}use_react_native!(:path => rn_config[\"reactNativePath\"]) # pb added\n")
|
631
|
+
lines.push("#{indentation}# #{line.strip} # pb removed\n")
|
632
|
+
else
|
633
|
+
lines.push(line)
|
634
|
+
end
|
635
|
+
end
|
636
|
+
|
637
|
+
return lines.join
|
638
|
+
end
|
639
|
+
|
640
|
+
def self.prepare_for_react_native_native_modules_file(podfile_content)
|
641
|
+
lines = []
|
642
|
+
podfile_content.each_line do |line|
|
643
|
+
if line.include?("use_native_modules!")
|
644
|
+
matches = line.match(/(\s*)/)
|
645
|
+
unless matches&.size == 2
|
646
|
+
return podfile_content
|
647
|
+
end
|
648
|
+
|
649
|
+
indentation = matches[1]
|
650
|
+
lines.push("#{indentation}use_native_modules!(rn_config) # pb added\n")
|
651
|
+
lines.push("#{indentation}# #{line.strip} # pb removed\n")
|
652
|
+
else
|
653
|
+
lines.push(line)
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
return lines.join
|
658
|
+
end
|
659
|
+
|
660
|
+
def self.prepare_for_react_native(podfile_content)
|
661
|
+
original_podfile_content = podfile_content.dup
|
662
|
+
|
663
|
+
podfile_content = prepare_for_react_native_write_pb_configuration(podfile_content)
|
664
|
+
content = prepare_for_react_native_rn_pods_file(podfile_content)
|
665
|
+
if content == podfile_content
|
666
|
+
return original_podfile_content
|
667
|
+
end
|
668
|
+
podfile_content = content
|
669
|
+
content = prepare_for_react_native_native_modules_file(podfile_content)
|
670
|
+
if content == podfile_content
|
671
|
+
return original_podfile_content
|
672
|
+
end
|
673
|
+
podfile_content = content
|
674
|
+
|
675
|
+
Configuration.build_using_repo_paths = true
|
676
|
+
Configuration.react_native_project = true
|
677
|
+
|
678
|
+
return podfile_content
|
679
|
+
end
|
680
|
+
|
681
|
+
def self.install_using_frameworks(analyzer)
|
682
|
+
target_settings = analyzer.podfile.target_definition_list.map(&:uses_frameworks?).uniq
|
683
|
+
if target_settings.count == 1
|
684
|
+
if target_settings.first == false
|
685
|
+
raise "\n\nOnly framework packaging currently supported. Please add 'use_frameworks!' at Podfile root level (not nested in targets)".red
|
686
|
+
end
|
687
|
+
return target_settings.first
|
688
|
+
elsif target_settings.count > 1
|
689
|
+
raise "\n\n'use_frameworks!' should be declared only once at Podfile root level (not nested in targets)".red
|
690
|
+
else
|
691
|
+
raise "\n\nFailed detecting use_frameworks!"
|
692
|
+
end
|
693
|
+
|
694
|
+
return true
|
537
695
|
end
|
538
696
|
end
|
539
697
|
end
|