pod-builder 4.4.1 → 4.4.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3b61237b9ba9ce8a64c815e9802ded560720e61fd602cbcba5a0e527350940c
4
- data.tar.gz: 738482aa4ba2c93fd51f7461b3fdbd12527877249eb9f5f3537fbc4f32a5a12b
3
+ metadata.gz: b997b0b093cce5c58a5b3f7b169bc9c0bf56f7bf45c4305677d5225bcb601fde
4
+ data.tar.gz: 0dd7183f48fcb9cee574f52b07f1879d027546eaf73f4994455c10c44d4baa9a
5
5
  SHA512:
6
- metadata.gz: 92de40ca5a513bf4c7d4f9cbdd36f3fe4550bef9ee400473f567377c2f9f7041f90afddf98cad2c7aabe64e62eb95ba953024a1c7c93f09f5d965e4adb6f173e
7
- data.tar.gz: 4470fbee9ac31820c71a8892a027151474dc358b9c5a5b02ca25ac8def663ddc248284c6281b6271b83e40f42256f0648bc100ebb4153ca5a14a4530579e808a
6
+ metadata.gz: 66f9bf382df640e48f48511d92b78459ffb55a00b66569143b22aa3731393477531c4519911556da40be04cd95a0b31ce68c3d17bb443234e733267b49ef638e
7
+ data.tar.gz: ad206eebf7ccf4e21d0d5bc990a70bcfb34877863741621f2b0fc545c737991b20baf39aef09791fc114dadfecd1378d065d3ce16163d69ef7c893d9c620cc3b
data/README.md CHANGED
@@ -71,6 +71,7 @@ PodBuilder comes with a rich set of commands:
71
71
  - `restore_all`: rebuilts all pods declared in the Restore-Podfile file
72
72
  - `install_sources`: installs sources of pods to debug into prebuild frameworks
73
73
  - `switch`: switch between prebuilt, development or standard pod in the Application-Podfile
74
+ - `switch_all`: switch all pods between prebuilt, development or standard in the Application-Podfile
74
75
  - `clean`: removes unused prebuilt frameworks, dSYMs and source files added by install_sources
75
76
  - `sync_podfile`: updates the Application-Podfile with all pods declared in the PodBuilder-Podfile file
76
77
  - `info`: outputs json-formatted information reflecting the current status of prebuilt pods
@@ -158,6 +159,10 @@ To support development pods you should specify the path(s) that contain the pods
158
159
 
159
160
  PodBuilder will automatically determine the proper path when switching a particular pod.
160
161
 
162
+ #### `switch_all` command
163
+
164
+ As `switch` but will switch all pods defined in PodBuilder-Podfile.
165
+
161
166
  #### `clean` command
162
167
 
163
168
  Deletes all unused files by PodBuilder, including .frameworks, .dSYMs and _Source_ repos.
data/exe/pod_builder CHANGED
@@ -41,6 +41,7 @@ Command:
41
41
  + install_sources Install sources of pods to debug into prebuilt items
42
42
  + generate_lldbinit Generate an lldbinit file with setting target.source-map to debug prebuilt items
43
43
  + switch Switch between prebuilt/development/standard pod in the Application-Podfile
44
+ + switch_all Switch all pods between prebuilt/development/standard in the Application-Podfile
44
45
  + clean Remove prebuild items, dSYMs and source files added by `install_sources` command that are no longer in the PodBuilder-Podfile
45
46
  + sync_podfile Update your Application-Podfile with all pods declared in the PodBuilder-Podfile
46
47
  + info Print json-formatted informations about prebuilt items
@@ -316,6 +317,41 @@ Options:
316
317
  ]
317
318
  },
318
319
 
320
+ "switch_all" => {
321
+ :opts => OptionParser.new do |opts|
322
+ opts.banner = "
323
+ Usage:
324
+
325
+ $ pod_builder switch_all [OPTIONS]
326
+
327
+ Switch all pods integration between prebuilt/development/default version.
328
+
329
+ Options:
330
+ "
331
+ opts.on("-p", "--prebuilt", "Use prebuilt") do |o|
332
+ OPTIONS[:switch_mode] = "prebuilt"
333
+ end
334
+ opts.on("-d", "--development", "Development pod") do |o|
335
+ OPTIONS[:switch_mode] = "development"
336
+ end
337
+ opts.on("-s", "--default", "Default version specified in PodBuilder-Podfile") do |o|
338
+ OPTIONS[:switch_mode] = "default"
339
+ end
340
+ opts.on("-c", "--child-deps", "Include dependencies of the specified <PODNAME...>") do |o|
341
+ OPTIONS[:resolve_child_dependencies] = true
342
+ end
343
+ opts.on("-r", "--parent-deps", "Include all pods that depend on the specified <PODNAME...>") do |o|
344
+ OPTIONS[:resolve_parent_dependencies] = true
345
+ end
346
+ opts.on("-u", "--skip-repo-update", "Skip CocoaPods repo update (only when passing --parent-deps") do |o|
347
+ OPTIONS[:update_repos] = false
348
+ end
349
+ end,
350
+ :call => [
351
+ PodBuilder::Command::SwitchAll
352
+ ]
353
+ },
354
+
319
355
  "sync_podfile" => {
320
356
  :opts => OptionParser.new do |opts|
321
357
  opts.banner = "
@@ -65,6 +65,10 @@ module PodBuilder
65
65
  source_path_rel_path,
66
66
  development_pods_config_rel_path]
67
67
 
68
+ if Configuration.react_native_project
69
+ git_ignores.push("build/")
70
+ end
71
+
68
72
  File.write("#{OPTIONS[:prebuild_path]}/.gitignore", git_ignores.join("\n"))
69
73
  end
70
74
 
@@ -141,7 +145,7 @@ module PodBuilder
141
145
  expected_header_search_path_prefix = "\"HEADER_SEARCH_PATHS\" => \""
142
146
  raise "\n\nExpected header search path entry not found\n".red unless content.include?(expected_header_search_path_prefix)
143
147
 
144
- content.sub!(expected_header_search_path_prefix, "#{expected_header_search_path_prefix}\\\"$(PODS_ROOT)/Headers/Public/Flipper-Folly\\\" ")
148
+ content.sub!(expected_header_search_path_prefix, "#{expected_header_search_path_prefix}\\\"$(PODS_ROOT)/Headers/Public/Flipper-Folly\\\" \\\"$(PODS_ROOT)/../build/generated/ios\\\" ")
145
149
  File.write(paths[0], content)
146
150
  end
147
151
  end
@@ -9,7 +9,22 @@ module PodBuilder
9
9
  PodBuilder::prepare_basepath
10
10
 
11
11
  argument_pods = ARGV.dup
12
-
12
+ switch_all = argument_pods.first == "*"
13
+
14
+ if switch_all
15
+ pods = []
16
+ podspecs = Dir.glob("#{PodBuilder::prebuiltpath}/**/*.podspec")
17
+ podspecs.each do |podspec|
18
+ spec = Pod::Specification.from_file(podspec)
19
+ podname = spec.attributes_hash["name"]
20
+ pods.push(podname)
21
+ end
22
+ argument_pods = pods
23
+ if OPTIONS[:switch_mode] == "development"
24
+ argument_pods.reject! { |pod_name| self.find_podspec(pod_name).nil? }
25
+ end
26
+ end
27
+
13
28
  unless argument_pods.count > 0
14
29
  return -1
15
30
  end
@@ -235,7 +250,7 @@ module PodBuilder
235
250
  if Pathname.new(path).relative?
236
251
  path = PodBuilder::basepath(path)
237
252
  end
238
- podspec_paths = Dir.glob(File.expand_path("#{path}/**/#{podname}*.podspec*"))
253
+ podspec_paths = Dir.glob(File.expand_path("#{path}/**/#{podname}.podspec"))
239
254
  podspec_paths.select! { |t| !t.include?("/Local Podspecs/") }
240
255
  podspec_paths.select! { |t| Dir.glob(File.join(File.dirname(t), "*")).count > 1 } # exclude podspec folder (which has one file per folder)
241
256
  if podspec_paths.count > 1
@@ -0,0 +1,15 @@
1
+ require 'pod_builder/core'
2
+
3
+ module PodBuilder
4
+ module Command
5
+ class SwitchAll
6
+ def self.call
7
+ Configuration.check_inited
8
+ PodBuilder::prepare_basepath
9
+
10
+ ARGV << "*"
11
+ return Command::Switch::call
12
+ end
13
+ end
14
+ end
15
+ end
@@ -9,6 +9,7 @@ require 'pod_builder/command/deintegrate'
9
9
  require 'pod_builder/command/generate_podspec'
10
10
  require 'pod_builder/command/install_sources'
11
11
  require 'pod_builder/command/switch'
12
+ require 'pod_builder/command/switch_all'
12
13
  require 'pod_builder/command/sync_podfile'
13
14
  require 'pod_builder/command/info'
14
15
  require 'pod_builder/command/generate_lldbinit'
@@ -176,6 +176,9 @@ module PodBuilder
176
176
  end
177
177
 
178
178
  PodBuilder::safe_rm_rf(basepath("Pods"))
179
+ if Configuration.react_native_project
180
+ PodBuilder::safe_rm_rf(basepath("build"))
181
+ end
179
182
  end
180
183
 
181
184
  def self.system_swift_version
@@ -198,8 +198,6 @@ module PodBuilder
198
198
  gitignored_files = PodBuilder::gitignoredfiles
199
199
 
200
200
  swift_version = PodBuilder::system_swift_version
201
-
202
- write_prebuilt_info_filename_gitattributes
203
201
 
204
202
  ret = Hash.new
205
203
  root_names = podfile_items.reject(&:is_prebuilt).map(&:root_name).uniq
@@ -441,14 +439,6 @@ module PodBuilder
441
439
  FileUtils.cp_r(PodBuilder::buildpath_dsympath, PodBuilder::basepath)
442
440
  end
443
441
  end
444
-
445
- def self.write_prebuilt_info_filename_gitattributes
446
- gitattributes_path = PodBuilder::basepath(".gitattributes")
447
- expected_attributes = ["#{Configuration.configuration_filename} binary"].join
448
- unless File.exists?(gitattributes_path) && File.read(gitattributes_path).include?(expected_attributes)
449
- File.write(gitattributes_path, expected_attributes, mode: 'a')
450
- end
451
- end
452
442
 
453
443
  def self.build_folder_hash_in_prebuilt_info_file(podfile_item)
454
444
  prebuilt_info_path = PodBuilder::prebuiltpath(File.join(podfile_item.root_name, Configuration.prebuilt_info_filename))
@@ -727,6 +727,15 @@ module PodBuilder
727
727
 
728
728
  def self.prepare_react_native_compilation_workarounds(podfile_content)
729
729
  return podfile_content + """
730
+
731
+ def prepare_rn_react_codegen
732
+ # Beginning with version 0.68.0 react native project compilation relies on some autogenerated files
733
+ # that are added to the React-Codegen target
734
+ source_path = \"#{PodBuilder::project_path}/build/generated/ios/.\"
735
+ destination_path = \"#{PodBuilder::basepath}/build/generated/ios\"
736
+ FileUtils.cp_r(source_path, destination_path)
737
+ end
738
+
730
739
  def prepare_rn_compilation_libevent
731
740
  path = \"Pods/libevent/include/event.h\"
732
741
  replace(path, \"#include <evutil.h>\", \"// #include <evutil.h>\")
@@ -745,11 +754,46 @@ def replace(path, find, replace)
745
754
  content = File.read(path).gsub(find, replace)
746
755
  File.write(path, content)
747
756
  end
748
- end
757
+ end
758
+
759
+ pre_install do |installer|
760
+ require 'json'
761
+
762
+ pods_path = \"#{PodBuilder::project_path}/Pods\"
763
+ j = JSON.parse(File.read(\"\#{pods_path}/Local Podspecs/FBReactNativeSpec.podspec.json\"))
764
+
765
+ output_files = j.dig(\"script_phases\", \"output_files\")
766
+
767
+ script_lines = j.dig(\"script_phases\", \"script\").split(\"\\n\")
768
+ script_lines.insert(0, \"export SCRIPT_OUTPUT_FILE_0=\\\"\#{output_files[0]}\\\"\")
769
+ script_lines.insert(0, \"export DERIVED_FILE_DIR=/tmp\")
770
+ script_lines.insert(0, \"export PODS_TARGET_SRCROOT=\\\"#{PodBuilder::project_path}/../node_modules/react-native/React/FBReactNativeSpec\\\"\")
771
+ script_lines.insert(0, \"export PODS_ROOT=\\\"\#{pods_path}\\\"\")
772
+
773
+ Dir.chdir(pods_path) do
774
+ cmd = script_lines.reject(&:blank?).join(\";\\n\")
775
+ system(cmd)
776
+ end
777
+ end
749
778
 
750
779
  post_install do |installer|
751
780
  prepare_rn_compilation_libevent()
752
781
  prepare_rn_flipper_module_redefinition()
782
+ prepare_rn_react_codegen()
783
+
784
+ installer.pods_project.targets.each do |target|
785
+ target.build_configurations.each do |config|
786
+ if target.name == 'React-Codegen'
787
+ config.build_settings['HEADER_SEARCH_PATHS'] = config.build_settings.fetch('HEADER_SEARCH_PATHS', []) + ['$(inherited)', '${PODS_ROOT}/Flipper-Folly', '${PODS_ROOT}/React-Core/ReactCommon', '$(PODS_ROOT)/React-Core/ReactCommon/react/renderer/graphics/platform/cxx', '$(PODS_ROOT)/React-Codegen/build/generated/ios']
788
+ end
789
+ if target.name == 'React-Core'
790
+ config.build_settings['HEADER_SEARCH_PATHS'] = config.build_settings.fetch('HEADER_SEARCH_PATHS', []) + ['$(inherited)', '${PODS_ROOT}/Flipper-Folly']
791
+ end
792
+ if target.name == 'React-CoreModules'
793
+ config.build_settings['HEADER_SEARCH_PATHS'] = config.build_settings.fetch('HEADER_SEARCH_PATHS', []) + ['$(inherited)', '${PODS_ROOT}/Flipper-Folly', '$(PODS_ROOT)/../build/generated/ios']
794
+ end
795
+ end
796
+ end
753
797
  end
754
798
  """
755
799
  end
@@ -1,3 +1,3 @@
1
1
  module PodBuilder
2
- VERSION = "4.4.1"
2
+ VERSION = "4.4.4"
3
3
  end
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.4.1
4
+ version: 4.4.4
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-03-31 00:00:00.000000000 Z
11
+ date: 2022-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -197,6 +197,7 @@ files:
197
197
  - lib/pod_builder/command/none.rb
198
198
  - lib/pod_builder/command/restore_all.rb
199
199
  - lib/pod_builder/command/switch.rb
200
+ - lib/pod_builder/command/switch_all.rb
200
201
  - lib/pod_builder/command/sync_podfile.rb
201
202
  - lib/pod_builder/command/update.rb
202
203
  - lib/pod_builder/configuration.rb