Add buck rule to generate Java library

Summary: Adds buck rule for generated code

Reviewed By: mdvacca, makovkastar

Differential Revision: D16338763

fbshipit-source-id: 6b238b3993cc110f009ad541cfa924d0d06d2fcb
This commit is contained in:
Rick Hanlon
2019-07-19 15:04:06 -07:00
committed by Facebook Github Bot
parent 9a546f5e9e
commit 1783780a92
6 changed files with 67 additions and 25 deletions
+23 -3
View File
@@ -10,7 +10,9 @@ load(
"fb_xplat_cxx_test",
"get_apple_compiler_flags",
"get_apple_inspector_flags",
"react_native_target",
"react_native_xplat_target",
"rn_android_library",
"rn_xplat_cxx_library",
)
@@ -22,8 +24,9 @@ def rn_codegen(
generate_event_emitter_cpp_name = "generate_event_emitter_cpp-{}".format(name)
generate_event_emitter_h_name = "generate_event_emitter_h-{}".format(name)
generate_props_cpp_name = "generate_props_cpp-{}".format(name)
generate_tests_cpp_name = "generate_tests_cpp-{}".format(name)
generate_props_h_name = "generated_props_h-{}".format(name)
generate_props_java_name = "generate_props_java-{}".format(name)
generate_tests_cpp_name = "generate_tests_cpp-{}".format(name)
generate_shadow_node_cpp_name = "generated_shadow_node_cpp-{}".format(name)
generate_shadow_node_h_name = "generated_shadow_node_h-{}".format(name)
generate_module_h_name = "generate_module_h-{}".format(name)
@@ -31,7 +34,7 @@ def rn_codegen(
fb_native.genrule(
name = generate_fixtures_rule_name,
srcs = [],
srcs = native.glob(["src/generators/**/*.js"]),
cmd = "$(exe fbsource//xplat/js/react-native-github/packages/react-native-codegen:rn_codegen) $(location {}) {} $OUT".format(schema_target, name),
out = "codegenfiles-{}".format(name),
)
@@ -72,6 +75,13 @@ def rn_codegen(
out = "Props.h",
)
fb_native.zip_file(
name = generate_props_java_name,
srcs = [":{}".format(generate_fixtures_rule_name)],
out = "{}.src.zip".format(generate_props_java_name),
visibility = ["PUBLIC"],
)
fb_native.genrule(
name = generate_shadow_node_cpp_name,
cmd = "cp $(location :{})/ShadowNodes.cpp $OUT".format(generate_fixtures_rule_name),
@@ -148,7 +158,6 @@ def rn_codegen(
],
)
# libs
rn_xplat_cxx_library(
name = "generated_modules-{}".format(name),
tests = [":generated_tests-{}".format(name)],
@@ -182,6 +191,17 @@ def rn_codegen(
],
)
rn_android_library(
name = "generated_components_java-{}".format(name),
srcs = [
":{}".format(generate_props_java_name),
],
visibility = ["PUBLIC"],
deps = [
react_native_target("java/com/facebook/react/bridge:bridge"),
],
)
# Tests
fb_xplat_cxx_test(
name = "generated_tests-{}".format(name),
@@ -0,0 +1,10 @@
package com.facebook.react.uimanager;
import android.view.ViewGroup;
public class BooleanPropNativeComponentViewManager extends BaseViewManager
implements BooleanPropNativeComponentInterface {
@Override
public void setDisabled(ViewGroup view, boolean value) {}
}
+8 -1
View File
@@ -24,6 +24,8 @@ const generatePropsCpp = require('./components/GeneratePropsCpp.js');
const generatePropsH = require('./components/GeneratePropsH.js');
const generateModuleH = require('./modules/GenerateModuleH.js');
const generateModuleCpp = require('./modules/GenerateModuleCpp.js');
const generatePropsJavaInterface = require('./components/GeneratePropsJavaInterface.js');
const generatePropsJavaDelegate = require('./components/GeneratePropsJavaDelegate.js');
const generateTests = require('./components/GenerateTests.js');
const generateShadowNodeCpp = require('./components/GenerateShadowNodeCpp.js');
const generateShadowNodeH = require('./components/GenerateShadowNodeH.js');
@@ -56,7 +58,12 @@ type Config = $ReadOnly<{|
const GENERATORS = {
descriptors: [generateComponentDescriptorH.generate],
events: [generateEventEmitterCpp.generate, generateEventEmitterH.generate],
props: [generatePropsCpp.generate, generatePropsH.generate],
props: [
generatePropsCpp.generate,
generatePropsH.generate,
generatePropsJavaInterface.generate,
generatePropsJavaDelegate.generate,
],
modules: [generateModuleCpp.generate, generateModuleH.generate],
tests: [generateTests.generate],
'shadow-nodes': [
@@ -79,7 +79,7 @@ function generatePropsString(component: ComponentShape, componentName: string) {
prop.name,
)}(T view, ${getJavaValueForProp(prop, componentName)});`;
})
.join(',\n' + ' ');
.join('\n' + ' ');
}
function getClassExtendString(component): string {
@@ -16,14 +16,14 @@ function upperCaseFirst(inString: string): string {
return inString[0].toUpperCase() + inString.slice(1);
}
export function toSafeJavaString(input: string): string {
function toSafeJavaString(input: string): string {
return input
.split('-')
.map(upperCaseFirst)
.join('');
}
export function getImports(component: ComponentShape): Set<string> {
function getImports(component: ComponentShape): Set<string> {
const imports: Set<string> = new Set();
component.extendsProps.forEach(extendProps => {
@@ -75,3 +75,8 @@ export function getImports(component: ComponentShape): Set<string> {
return imports;
}
module.exports = {
toSafeJavaString,
getImports,
};
@@ -9,13 +9,13 @@ import android.view.View;
import com.facebook.react.bridge.ReadableArray;
public interface ArrayPropsNativeComponentInterface<T extends View> {
void setNames(T view, ReadableArray value);,
void setDisableds(T view, ReadableArray value);,
void setProgress(T view, ReadableArray value);,
void setRadii(T view, ReadableArray value);,
void setColors(T view, ReadableArray value);,
void setSrcs(T view, ReadableArray value);,
void setPoints(T view, ReadableArray value);,
void setNames(T view, ReadableArray value);
void setDisableds(T view, ReadableArray value);
void setProgress(T view, ReadableArray value);
void setRadii(T view, ReadableArray value);
void setColors(T view, ReadableArray value);
void setSrcs(T view, ReadableArray value);
void setPoints(T view, ReadableArray value);
void setSizes(T view, ReadableArray value);
}
",
@@ -128,11 +128,11 @@ package com.facebook.react.viewmanagers;
import android.view.View;
public interface FloatPropNativeComponentInterface<T extends View> {
void setBlurRadius(T view, Float value);,
void setBlurRadius2(T view, Float value);,
void setBlurRadius3(T view, Float value);,
void setBlurRadius4(T view, Float value);,
void setBlurRadius5(T view, Float value);,
void setBlurRadius(T view, Float value);
void setBlurRadius2(T view, Float value);
void setBlurRadius3(T view, Float value);
void setBlurRadius4(T view, Float value);
void setBlurRadius5(T view, Float value);
void setBlurRadius6(T view, Float value);
}
",
@@ -162,8 +162,8 @@ package com.facebook.react.viewmanagers;
import android.view.View;
public interface IntegerPropNativeComponentInterface<T extends View> {
void setProgress1(T view, int value);,
void setProgress2(T view, int value);,
void setProgress1(T view, int value);
void setProgress2(T view, int value);
void setProgress3(T view, int value);
}
",
@@ -193,9 +193,9 @@ import android.view.View;
import com.facebook.react.bridge.ReadableMap;
public interface ImageColorPropNativeComponentInterface<T extends View> {
void setThumbImage(T view, ReadableMap value);,
void setColor(T view, Integer value);,
void setThumbTintColor(T view, Integer value);,
void setThumbImage(T view, ReadableMap value);
void setColor(T view, Integer value);
void setThumbTintColor(T view, Integer value);
void setPoint(T view, ReadableMap value);
}
",
@@ -239,7 +239,7 @@ package com.facebook.react.viewmanagers;
import android.view.View;
public interface StringPropComponentInterface<T extends View> {
void setAccessibilityHint(T view, String value);,
void setAccessibilityHint(T view, String value);
void setAccessibilityRole(T view, String value);
}
",