diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTask.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTask.kt index 599741c57b4..ad9434cf53c 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTask.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTask.kt @@ -68,10 +68,15 @@ abstract class GenerateCodegenArtifactsTask : Exec() { windowsAwareYarn( *nodeExecutableAndArgs.get().toTypedArray(), reactRoot.file("scripts/generate-specs-cli.js").get().asFile.absolutePath, + "--platform", "android", + "--schemaPath", generatedSchemaFile.get().asFile.absolutePath, + "--outputDir", generatedSrcDir.get().asFile.absolutePath, + "--libraryName", libraryName.get(), + "--javaPackageName", codegenJavaPackageName.get())) } } diff --git a/packages/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTaskTest.kt b/packages/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTaskTest.kt index b07244f49e8..a9df6181d42 100644 --- a/packages/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTaskTest.kt +++ b/packages/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/tasks/GenerateCodegenArtifactsTaskTest.kt @@ -100,10 +100,15 @@ class GenerateCodegenArtifactsTaskTest { "yarn", "--verbose", File(reactRoot, "scripts/generate-specs-cli.js").toString(), + "--platform", "android", + "--schemaPath", File(outputDir, "schema.json").toString(), + "--outputDir", outputDir.toString(), + "--libraryName", "example-test", + "--javaPackageName", "com.example.test", ), task.commandLine.toMutableList()) diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 73bb0aa797a..364a7ca3412 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -881,7 +881,7 @@ SPEC CHECKSUMS: CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 FBLazyVector: b81a2b70c72d8b0aefb652cea22c11e9ffd02949 - FBReactNativeSpec: 8c199be18a891a49a1e24b3501e953a51311a46c + FBReactNativeSpec: c72b6aa43f36a4bfa45376f24ac5d10339070635 Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -923,10 +923,10 @@ SPEC CHECKSUMS: React-RCTTest: 12bbd7fc2e72bd9920dc7286c5b8ef96639582b6 React-RCTText: e9146b2c0550a83d1335bfe2553760070a2d75c7 React-RCTVibration: 50be9c390f2da76045ef0dfdefa18b9cf9f35cfa - React-rncore: f592388ccb12d9317609bdb1d8dda236e6c0a2be + React-rncore: 95c628b2be148269a3189ad1c9f4390b6c73a7d7 React-runtimeexecutor: 4b0c6eb341c7d3ceb5e2385cb0fdb9bf701024f3 ReactCommon: 7a2714d1128f965392b6f99a8b390e3aa38c9569 - ScreenshotManager: dd14e8064e4e3e84c7f568431c8439cb7c1df81e + ScreenshotManager: 965ca5b82e28f0d7baac83c275521770407c60a4 Yoga: c0d06f5380d34e939f55420669a60fe08b79bd75 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a diff --git a/scripts/generate-artifacts.js b/scripts/generate-artifacts.js index 8fdb8e06ad3..57780970827 100644 --- a/scripts/generate-artifacts.js +++ b/scripts/generate-artifacts.js @@ -178,7 +178,9 @@ function main(appRootDir) { RN_ROOT, 'scripts', 'generate-specs-cli.js', - )} ios ${pathToSchema} ${pathToTempOutputDir} ${library.config.name}`, + )} --platform ios --schemaPath ${pathToSchema} --outputDir ${pathToTempOutputDir} --libraryName ${ + library.config.name + }`, ); fs.mkdirSync(pathToOutputDirIOS, {recursive: true}); execSync(`cp -R ${pathToTempOutputDir}/* ${pathToOutputDirIOS}`); diff --git a/scripts/generate-specs-cli.js b/scripts/generate-specs-cli.js index cfa8546f5ff..db0def52722 100644 --- a/scripts/generate-specs-cli.js +++ b/scripts/generate-specs-cli.js @@ -22,6 +22,42 @@ try { const fs = require('fs'); const mkdirp = require('mkdirp'); const path = require('path'); +const yargs = require('yargs'); + +const argv = yargs + .option('p', { + alias: 'platform', + describe: 'Platform to generate native code artifacts for.', + }) + .option('s', { + alias: 'schemaPath', + describe: 'The path to the schema file.', + }) + .option('o', { + alias: 'outputDir', + describe: + 'Path to directory where native code source files should be saved.', + }) + .option('n', { + alias: 'libraryName', + describe: 'Name of specs library.', + default: 'FBReactNativeSpec', + }) + .option('j', { + alias: 'javaPackageName', + describe: 'Name of Java package.', + default: 'com.facebook.fbreact.specs', + }) + .option('t', { + alias: 'libraryType', + describe: 'all, components, or modules.', + default: 'all', + }) + .usage('Usage: $0 ') + .demandOption( + ['platform', 'schemaPath', 'outputDir'], + 'Please provide platform, schema path, and output directory.', + ).argv; const GENERATORS = { all: { @@ -97,20 +133,13 @@ function generateSpec( } function main() { - const args = process.argv.slice(2); - const platform = args[0]; - const schemaPath = args[1]; - const outputDir = args[2]; - const libraryName = args[3] || 'FBReactNativeSpec'; - const javaPackageName = args[4] || 'com.facebook.fbreact.specs'; - const libraryType = args[5] || 'all'; // all, components, or modules generateSpec( - platform, - schemaPath, - outputDir, - libraryName, - javaPackageName, - libraryType, + argv.platform, + argv.schemaPath, + argv.outputDir, + argv.libraryName, + argv.javaPackageName, + argv.libraryType, ); } diff --git a/scripts/react_native_pods.rb b/scripts/react_native_pods.rb index c7b8cd37cf7..746f68460b1 100644 --- a/scripts/react_native_pods.rb +++ b/scripts/react_native_pods.rb @@ -436,7 +436,7 @@ generateCodegenSchemaFromJavaScript () { generateCodegenArtifactsFromSchema () { describe "Generating codegen artifacts from schema" pushd "$RN_DIR" >/dev/null || exit 1 - "$NODE_BINARY" "scripts/generate-specs-cli.js" ios "$GENERATED_SCHEMA_FILE" "$TEMP_OUTPUT_DIR" "$LIBRARY_NAME" "" "$LIBRARY_TYPE" + "$NODE_BINARY" "scripts/generate-specs-cli.js" --platform ios --schemaPath "$GENERATED_SCHEMA_FILE" --outputDir "$TEMP_OUTPUT_DIR" --libraryName "$LIBRARY_NAME" --libraryType "$LIBRARY_TYPE" popd >/dev/null || exit 1 }