diff --git a/Libraries/BUCK b/Libraries/BUCK index 2f64ec0bbd5..cef11f41005 100644 --- a/Libraries/BUCK +++ b/Libraries/BUCK @@ -31,6 +31,7 @@ fb_native.genrule( rn_codegen_modules( name = "FBReactNativeSpec", + android_package_name = "com.facebook.fbreact.specs", library_labels = ["supermodule:xplat/default/public.react_native.infra"], native_module_spec_name = "FBReactNativeSpec", schema_target = ":react_native_codegen_schema", diff --git a/packages/react-native-codegen/BUCK b/packages/react-native-codegen/BUCK index 07b517fc2f7..d9da90a41f0 100644 --- a/packages/react-native-codegen/BUCK +++ b/packages/react-native-codegen/BUCK @@ -28,6 +28,7 @@ rn_codegen_components( rn_codegen_modules( name = "codegen_tests", + android_package_name = "com.facebook.fbreact.specs", native_module_spec_name = "FBReactNativeTestSpec", schema_target = ":codegen_tests_schema", ) diff --git a/packages/react-native-codegen/DEFS.bzl b/packages/react-native-codegen/DEFS.bzl index 06a9ef6c937..7cd02e2c0e2 100644 --- a/packages/react-native-codegen/DEFS.bzl +++ b/packages/react-native-codegen/DEFS.bzl @@ -105,6 +105,7 @@ def rn_codegen_cli(): def rn_codegen_modules( name, native_module_spec_name, + android_package_name, library_labels = [], schema_target = ""): generate_fixtures_rule_name = "generate_fixtures_modules-{}".format(name) @@ -118,7 +119,13 @@ def rn_codegen_modules( fb_native.genrule( name = generate_fixtures_rule_name, srcs = native.glob(["src/generators/**/*.js"]), - cmd = "$(exe {}) $(location {}) {} $OUT {}".format(react_native_root_target("packages/react-native-codegen:generate_all_from_schema"), schema_target, name, native_module_spec_name), + cmd = "$(exe {generator_script}) $(location {schema_target}) {library_name} $OUT {native_module_spec_name} {android_package_name}".format( + generator_script = react_native_root_target("packages/react-native-codegen:generate_all_from_schema"), + schema_target = schema_target, + library_name = name, + native_module_spec_name = native_module_spec_name, + android_package_name = android_package_name, + ), out = "codegenfiles-{}".format(name), labels = ["codegen_rule"], ) @@ -128,9 +135,10 @@ def rn_codegen_modules( ################## fb_native.genrule( name = generate_module_java_name, - # TODO: support different package name internally. - # Right now, it's hardcoded to `com.facebook.fbreact.specs`. - cmd = "mkdir -p $OUT/com/facebook/fbreact/specs && cp -r $(location :{})/java/com/facebook/fbreact/specs/* $OUT/com/facebook/fbreact/specs/".format(generate_fixtures_rule_name), + cmd = "mkdir -p $OUT/{spec_path} && cp -r $(location {generator_target})/java/{spec_path}/* $OUT/{spec_path}/".format( + spec_path = android_package_name.replace(".", "/"), + generator_target = ":" + generate_fixtures_rule_name, + ), out = "src", labels = ["codegen_rule"], ) diff --git a/packages/react-native-codegen/src/cli/generators/generate-all.js b/packages/react-native-codegen/src/cli/generators/generate-all.js index 613eec58c0b..6b7e8509e95 100644 --- a/packages/react-native-codegen/src/cli/generators/generate-all.js +++ b/packages/react-native-codegen/src/cli/generators/generate-all.js @@ -19,7 +19,7 @@ const fs = require('fs'); const mkdirp = require('mkdirp'); const args = process.argv.slice(2); -if (args.length !== 4) { +if (args.length < 4) { throw new Error( `Expected to receive path to schema, library name, output directory and module spec name. Received ${args.join( ', ', diff --git a/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js b/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js index 34334426418..8739e09bafa 100644 --- a/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js +++ b/packages/react-native-codegen/src/generators/modules/GenerateModuleJavaSpec.js @@ -371,11 +371,12 @@ module.exports = { packageName?: string, ): FilesOutput { const files = new Map(); - const normalizedPackageName = - packageName != null ? packageName : 'com.facebook.fbreact.specs'; - const outputDir = `java/${normalizedPackageName.replace(/\./g, '/')}`; const nativeModules = getModules(schema); + const normalizedPackageName = + packageName == null ? 'com.facebook.fbreact.specs' : packageName; + const outputDir = `java/${normalizedPackageName.replace(/\./g, '/')}`; + Object.keys(nativeModules).forEach(hasteModuleName => { const { aliases, diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleCpp-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleCpp-test.js index 6dbe02f952f..6904c804baf 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleCpp-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleCpp-test.js @@ -22,7 +22,12 @@ describe('GenerateModuleCpp', () => { it(`can generate fixture ${fixtureName}`, () => { expect( - generator.generate(fixtureName, fixture, 'SampleSpec'), + generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ), ).toMatchSnapshot(); }); }); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleH-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleH-test.js index 658221b5629..ffe05d6880d 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleH-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleH-test.js @@ -22,7 +22,12 @@ describe('GenerateModuleH', () => { it(`can generate fixture ${fixtureName}`, () => { expect( - generator.generate(fixtureName, fixture, 'SampleSpec'), + generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ), ).toMatchSnapshot(); }); }); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleHObjCpp-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleHObjCpp-test.js index 3c494397185..fc148e2efc4 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleHObjCpp-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleHObjCpp-test.js @@ -21,7 +21,12 @@ describe('GenerateModuleHObjCpp', () => { const fixture = fixtures[fixtureName]; it(`can generate fixture ${fixtureName}`, () => { - const output = generator.generate(fixtureName, fixture, 'SampleSpec'); + const output = generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ); expect( new Map([['SampleSpec.h', output.get('SampleSpec.h')]]), ).toMatchSnapshot(); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJavaSpec-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJavaSpec-test.js index 5ccb87d2d4b..e7c77457dd7 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJavaSpec-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJavaSpec-test.js @@ -22,7 +22,12 @@ describe('GenerateModuleJavaSpec', () => { it(`can generate fixture ${fixtureName}`, () => { expect( - generator.generate(fixtureName, fixture, 'SampleSpec'), + generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ), ).toMatchSnapshot(); }); }); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniCpp-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniCpp-test.js index e6030bca0fc..d3dae278440 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniCpp-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniCpp-test.js @@ -22,7 +22,12 @@ describe('GenerateModuleJniCpp', () => { it(`can generate fixture ${fixtureName}`, () => { expect( - generator.generate(fixtureName, fixture, 'SampleSpec'), + generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ), ).toMatchSnapshot(); }); }); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniH-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniH-test.js index dcbd78a42c6..d5ac7ecfb32 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniH-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleJniH-test.js @@ -22,7 +22,12 @@ describe('GenerateModuleJniH', () => { it(`can generate fixture ${fixtureName}`, () => { expect( - generator.generate(fixtureName, fixture, 'SampleSpec'), + generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ), ).toMatchSnapshot(); }); }); diff --git a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleMm-test.js b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleMm-test.js index ec8f4842a10..3c0e5686585 100644 --- a/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleMm-test.js +++ b/packages/react-native-codegen/src/generators/modules/__tests__/GenerateModuleMm-test.js @@ -21,7 +21,12 @@ describe('GenerateModuleMm', () => { const fixture = fixtures[fixtureName]; it(`can generate fixture ${fixtureName}`, () => { - const output = generator.generate(fixtureName, fixture, 'SampleSpec'); + const output = generator.generate( + fixtureName, + fixture, + 'SampleSpec', + 'com.facebook.fbreact.specs', + ); expect( new Map([ ['SampleSpec-generated.mm', output.get('SampleSpec-generated.mm')],