Skip to content

Commit d49f1eb

Browse files
fkgozalifacebook-github-bot
authored andcommitted
rn_codegen: define a method to convert package.json codegenConfig into Buck format (#36868)
Summary: Pull Request resolved: #36868 Given a codegenConfig definition in a library's package.json, convert it into Buck specific codegen format, as defined by the kwargs of rn_codegen(). Reference: https://reactnative.dev/docs/next/new-architecture-library-intro#configure-codegen Changelog: [Internal] Reviewed By: cortinico, mdvacca Differential Revision: D44857743 fbshipit-source-id: 82011161d43cebe701cd2b129208054c21d3175a
1 parent ad4a857 commit d49f1eb

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

tools/build_defs/oss/rn_codegen_defs.bzl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,32 @@ def rn_codegen(
9999
schema_target = ":codegen_rn_components_schema_{}".format(component_spec_name),
100100
library_labels = library_labels,
101101
)
102+
103+
# Given the codegenConfig defined inside package.json, convert it to the Buck specific configs.
104+
# Specification: https://reactnative.dev/docs/next/new-architecture-library-intro#configure-codegen
105+
def buck_codegen_config_from_package_codegen_config(package_codegen_config):
106+
configs = {}
107+
108+
name = package_codegen_config["name"]
109+
android_package_name = "com.facebook.fbreact.specs"
110+
if "android" in package_codegen_config:
111+
android_config = package_codegen_config["android"]
112+
if "javaPackageName" in android_config:
113+
# Note: assume Kotlin will use the same package name
114+
android_package_name = android_config["javaPackageName"]
115+
116+
codegen_type = package_codegen_config["type"]
117+
if codegen_type == "modules" or codegen_type == "all":
118+
configs["codegen_modules"] = True
119+
configs["native_module_spec_name"] = name
120+
configs["android_package_name"] = android_package_name
121+
122+
if codegen_type == "components" or codegen_type == "all":
123+
configs["codegen_components"] = True
124+
configs["native_component_spec_name"] = name
125+
configs["android_package_name"] = android_package_name
126+
127+
js_srcs_dir = package_codegen_config["jsSrcsDir"]
128+
configs["codegen_src_prefix"] = (js_srcs_dir + "/") if js_srcs_dir else ""
129+
130+
return configs

0 commit comments

Comments
 (0)