diff --git a/package.json b/package.json index 6099524b4f..6f0eb55b4f 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "rn-get-polyfills.js", "scripts/compose-source-maps.js", "scripts/fixmacscripts.sh", + "scripts/generate-native-modules-specs-cli.js", "scripts/ios-configure-glog.sh", "scripts/launchPackager.bat", "scripts/launchPackager.command", diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index b99517749b..359fbe5cba 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -97,13 +97,13 @@ def frameworks_pre_install(installer) end end -def codegen_pre_install(installer) - system("../../scripts/generate-native-modules-specs.sh") -end - pre_install do |installer| frameworks_pre_install(installer) if ENV['USE_FRAMEWORKS'] == '1' - codegen_pre_install(installer) if ENV['USE_CODEGEN'] == '1' + if ENV['USE_CODEGEN'] != '0' + prefix_path = "../.." + codegen_path = "../../packages/react-native-codegen" + codegen_pre_install(installer, {path:prefix_path, codegen_path:codegen_path}) + end end post_install do |installer| diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index c77b1e15d3..0b3fd9aed1 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -510,8 +510,8 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845 CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f DoubleConversion: 0ea4559a49682230337df966e735d6cc7760108e - FBLazyVector: 22cae52bed73cdeaf89e42911984e9fbaf0476dd - FBReactNativeSpec: c52ee41c27413247585c4229e4d0103b3983cb42 + FBLazyVector: 42fd0d107b5cd4a5f3bf6b83c7fcc66aa4520510 + FBReactNativeSpec: 53bf8755a8ccecba3c8cbdcfbad710cb89fa4201 Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3 @@ -522,35 +522,35 @@ SPEC CHECKSUMS: glog: 0dc7efada961c0793012970b60faebbd58b0decb OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 RCT-Folly: 2f2111690f1e23490285c059ca53be22fe6d6bee - RCTRequired: 2d894d120cbad90f34a1405abaf96af262e95cd9 - RCTTypeSafety: e2e15bc61b175a5d9ef013320793fabb0878af96 - React: 1c6246ee16fc8207df1f141ee01e947f4479bf91 - React-callinvoker: b7bcbe84d13d87b93054e14b96d84cf97a3e6e12 - React-Core: fbb18510326bebe866167e7e42157a5681b5c781 - React-CoreModules: 75c004b1a87c31e3b630e65ccfce2f0ae4e4ae57 - React-cxxreact: 72587e5343c83d4aa558abbd295a329ed54b5c12 - React-jsi: 35e5f1313a6a560543fde551c21a7a7e858c72bb - React-jsiexecutor: 3b0dd1c21ad49d9d76fabb0f7faab799d2ffb0e5 - React-jsinspector: a7f0c323c3aed1212cdd9d4635ac4f8f672b032a - React-perflogger: b6ff9afc583d8c370fa1d6bc2e2ebadd910d850c - React-RCTActionSheet: 9f424c7896f96e1e6e091d9840156baf9ff51e49 - React-RCTAnimation: a4e9dafe2738684565a1ef07e306edfbd967a859 - React-RCTBlob: 043194e59d4ef5eafc85d425dff049f9d19511cd - React-RCTImage: ac10aff9fe50a76d74543404bac65f9e7657ed50 - React-RCTLinking: d3248877abd81591f44238777d72b1a412cd61af - React-RCTNetwork: fb21e93cc8bdbfb3125af7f920b4ef81f34f7655 - React-RCTPushNotification: 50b036fd627ea36319e07a94a37d83271ad50683 - React-RCTSettings: df2afde3e02c8832ec29beaf260bb74ba5629b4e - React-RCTTest: 02d5ff54d754c9f3103b035d9a0c4598b04cde8a - React-RCTText: 09d64881d6460c093b9a8c7007beabb91208e779 - React-RCTVibration: 15a0b464d4a3420b7813dbfab756ed0b90278d33 - React-runtimeexecutor: ee793a4c824af32df7138e6997c630ef7c958e2a + RCTRequired: 6effc3fe99cee92b1e55e07790d39ff2b91871c2 + RCTTypeSafety: 4fd0be7cfad501eeca08d0549e5c50969b3d653f + React: 04d78295b229652d801e27ba4ea997f36ab8eb26 + React-callinvoker: b6de5cb5895216c65bd09252061821033f7df4b2 + React-Core: 49edda4b03648d3238cc5899b70f9b479999157d + React-CoreModules: a263098bc9696bbff042f6fcaae08a04d1516fdb + React-cxxreact: 642ce4ff6a259cdbb68fbbc7c3b76d8f76db628c + React-jsi: 466c1021e3f49e85479d53e868a07443ccf8d5ed + React-jsiexecutor: 0d671267cbd68630f7d4aae91f48c669550fbaa5 + React-jsinspector: fb852df1d65630988b111cf5794f7728d0201cf2 + React-perflogger: 691ed3fa88d0e877a08ba9147f8ffb514d6f39b9 + React-RCTActionSheet: 257096f27dfb81e14d9e4ab944887c738fb5db2b + React-RCTAnimation: b63f528d2ef22bc0d69f410fd53d30c81470856d + React-RCTBlob: 8d545de85fbe06215939523b4a2d0fdfaa4beee2 + React-RCTImage: 7430b39a25ddf4ff3cb6b477505e060bfd6cddeb + React-RCTLinking: 3398e77dc8626239ffea07ca1da2f3b84674b799 + React-RCTNetwork: 0bc551f0e86475066a5db2af9aef73fe91781920 + React-RCTPushNotification: 4528ded7c265ebdcabeb09bbca68a462ee0ef51a + React-RCTSettings: a06c33e3d341e629bdded3c400ee1f63d5b4955f + React-RCTTest: 8992f88aee9202bd9041a3d1c54267b4d2da5df6 + React-RCTText: 70d46471bb82f57527b792b1d00b927028ae7620 + React-RCTVibration: 284e0c6265cb4995c7b8e8085ddc8f1ad575ca7d + React-runtimeexecutor: 54d855cd76c010a3f18e67a951a9b4c0c006427f React-TurboModuleCxx-RNW: 12172bdbaaf052406ec571465243fad4b2eb2702 - React-TurboModuleCxx-WinRTPort: 462fed457927d9608e779115d23f9f4165fca5b0 - ReactCommon: 9aeaa670f2c10746a2e0950c1f27d1998b1f0b28 - Yoga: a8f895791740c0e8735738b3df43643c0de47706 + React-TurboModuleCxx-WinRTPort: adff7823471eacd7f22d1111b05f0882867ad21d + ReactCommon: 29465a68b75860ade10f6006012af19f3519fd25 + Yoga: 5331d34489795261c0bab7f8c2ae551e84a4d376 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: cb260f8f7765c910b68f8267cbd74709f6ae6e54 +PODFILE CHECKSUM: 137f7f3bac34f47635bfdf49f5a43549134d86de COCOAPODS: 1.10.1 diff --git a/scripts/generate-native-modules-specs-cli.js b/scripts/generate-native-modules-specs-cli.js index a668c58b9c..64b1e180a3 100644 --- a/scripts/generate-native-modules-specs-cli.js +++ b/scripts/generate-native-modules-specs-cli.js @@ -9,7 +9,16 @@ 'use strict'; -const RNCodegen = require('../packages/react-native-codegen/lib/generators/RNCodegen.js'); +let RNCodegen; +try { + RNCodegen = require('react-native-codegen/lib/generators/RNCodegen.js'); +} catch (e) { + RNCodegen = require('../packages/react-native-codegen/lib/generators/RNCodegen.js'); + if (!RNCodegen) { + throw 'RNCodegen not found.'; + } +} + const fs = require('fs'); const mkdirp = require('mkdirp'); const os = require('os'); diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index 6b1c0f4d08..551004d535 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -112,3 +112,17 @@ def flipper_post_install(installer) end end end + +# Pre Install processing for Native Modules +def codegen_pre_install(installer, options={}) + prefix = options[:path] ||= "../node_modules/react-native" + codegen_path = options[:codegen_path] ||= "../node_modules/react-native-codegen" + + Dir.mktmpdir do |dir| + native_module_spec_name = "FBReactNativeSpec" + schema_file = dir + "/schema-#{native_module_spec_name}.json" + srcs_dir = "#{prefix}/Libraries" + schema_generated = system("node #{codegen_path}/lib/cli/combine/combine-js-to-schema-cli.js #{schema_file} #{srcs_dir}") + specs_generated = system("node #{prefix}/scripts/generate-native-modules-specs-cli.js ios #{schema_file} #{srcs_dir}/#{native_module_spec_name}/#{native_module_spec_name}") + end +end diff --git a/template/ios/Podfile b/template/ios/Podfile index 6701249e83..04f68e5431 100644 --- a/template/ios/Podfile +++ b/template/ios/Podfile @@ -13,6 +13,10 @@ target 'HelloWorld' do # Pods for testing end + pre_install do |installer| + codegen_pre_install(installer) + end + # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and diff --git a/template/package.json b/template/package.json index a500cb5a1d..c428126e24 100644 --- a/template/package.json +++ b/template/package.json @@ -21,7 +21,8 @@ "eslint": "^6.5.1", "jest": "^25.1.0", "metro-react-native-babel-preset": "^0.63.0", - "react-test-renderer": "16.13.1" + "react-test-renderer": "16.13.1", + "react-native-codegen": "0.0.4" }, "jest": { "preset": "react-native"