diff --git a/.gitignore b/.gitignore index db3550072b0..a34c407b2a3 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,6 @@ project.xcworkspace # Gradle /build/ -/packages/react-native-codegen/android/build/ /packages/react-native-gradle-plugin/build/ /packages/rn-tester/android/app/.cxx/ /packages/rn-tester/android/app/build/ diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index 7d2e903790e..7ab5438188d 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -7,7 +7,7 @@ plugins { id("com.android.library") - id("com.facebook.react.codegen") + id("com.facebook.react") id("maven-publish") id("de.undercouch.download") } diff --git a/packages/react-native-codegen/android/build.gradle b/packages/react-native-codegen/android/build.gradle deleted file mode 100644 index ddb8615512f..00000000000 --- a/packages/react-native-codegen/android/build.gradle +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import org.apache.tools.ant.taskdefs.condition.Os - -plugins { - id 'java-gradle-plugin' -} - -repositories { - mavenLocal() - google() - mavenCentral() -} - -dependencies { - implementation 'com.android.tools.build:gradle:4.2.2' - // Use the same Gson version that `com.android.tools.build:gradle` depends on. - implementation 'com.google.code.gson:gson:2.8.5' - implementation 'com.google.guava:guava:29.0-jre' - implementation 'com.squareup:javapoet:1.13.0' -} - -gradlePlugin { - plugins { - codegen { - id = 'com.facebook.react.codegen' - implementationClass = 'com.facebook.react.codegen.plugin.CodegenPlugin' - } - } -} - -// This task is required when using react-native-codegen from source, instead of npm. -task('buildCodegenCLI', type: Exec) { - def codegenRoot = "$projectDir/.." - - inputs.files( - file("$codegenRoot/scripts"), - file("$codegenRoot/src"), - file("$codegenRoot/package.json"), - file("$codegenRoot/.babelrc"), - file("$codegenRoot/.prettierrc"), - ) - - def libDir = file("$codegenRoot/lib") - libDir.mkdirs() - def nodeModulesDir = file("$codegenRoot/node_modules") - nodeModulesDir.mkdirs(); - outputs.dirs(libDir, nodeModulesDir) - - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - // Convert path to Linux format: use canonical path to strip it off relative elements in the middle of the string. - // Then replace baskslashes with slashes, remove leading colon, add leading slash. - // Eg. D:\path1\sub2/.. -> /D/path1/path2 - String canonicalPath = new File(codegenRoot).getCanonicalPath() - String linuxPath = canonicalPath.replace('\\', '/'); - linuxPath = linuxPath.replace(':', '') - linuxPath = '/' + linuxPath - - // Get the location of bash in the system; assume environment variable created to store it. - String bashHome = "$System.env.REACT_WINDOWS_BASH" - if (bashHome == null) { - throw new GradleException("REACT_WINDOWS_BASH is not defined.") - } - commandLine(bashHome, "-c", "$linuxPath/scripts/oss/build.sh") - } - else { - commandLine("$codegenRoot/scripts/oss/build.sh") - } -} diff --git a/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.jar b/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023e..00000000000 Binary files a/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.properties b/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index af7be50b101..00000000000 --- a/packages/react-native-codegen/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/packages/react-native-codegen/android/gradlew b/packages/react-native-codegen/android/gradlew deleted file mode 100755 index 4f906e0c811..00000000000 --- a/packages/react-native-codegen/android/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/packages/react-native-codegen/android/gradlew.bat b/packages/react-native-codegen/android/gradlew.bat deleted file mode 100644 index ac1b06f9382..00000000000 --- a/packages/react-native-codegen/android/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/packages/react-native-codegen/android/settings.gradle b/packages/react-native-codegen/android/settings.gradle deleted file mode 100644 index f399ad57e35..00000000000 --- a/packages/react-native-codegen/android/settings.gradle +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -pluginManagement { - repositories { - gradlePluginPortal() - mavenLocal() - google() - } -} - -rootProject.name = 'react-native-codegen-android' diff --git a/packages/react-native-gradle-plugin/build.gradle.kts b/packages/react-native-gradle-plugin/build.gradle.kts index d7ad553195f..60c1b3766ca 100644 --- a/packages/react-native-gradle-plugin/build.gradle.kts +++ b/packages/react-native-gradle-plugin/build.gradle.kts @@ -21,7 +21,7 @@ repositories { gradlePlugin { plugins { create("reactApp") { - id = "com.facebook.react.app" + id = "com.facebook.react" implementationClass = "com.facebook.react.ReactAppPlugin" } } diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/JavaGenerator.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/JavaGenerator.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/JavaGenerator.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/JavaGenerator.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/SchemaJsonParser.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/SchemaJsonParser.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/SchemaJsonParser.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/SchemaJsonParser.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/AliasType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/AliasType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/AliasType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/AliasType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/AnyType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/AnyType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/AnyType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/AnyType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ArrayType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ArrayType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ArrayType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ArrayType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/BooleanType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/BooleanType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/BooleanType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/BooleanType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/CodegenException.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/CodegenException.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/CodegenException.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/CodegenException.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/DoubleType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/DoubleType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/DoubleType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/DoubleType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/FloatType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/FloatType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/FloatType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/FloatType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/FunctionType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/FunctionType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/FunctionType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/FunctionType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/GenericObjectType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/GenericObjectType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/GenericObjectType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/GenericObjectType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/Int32Type.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/Int32Type.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/Int32Type.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/Int32Type.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NativeModuleType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NativeModuleType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NativeModuleType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NativeModuleType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NullableType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NullableType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NullableType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NullableType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NumberType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NumberType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/NumberType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/NumberType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ObjectType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ObjectType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ObjectType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ObjectType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/PromiseType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/PromiseType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/PromiseType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/PromiseType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ReservedFunctionValueType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ReservedFunctionValueType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/ReservedFunctionValueType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/ReservedFunctionValueType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/StringType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/StringType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/StringType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/StringType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/Type.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/Type.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/Type.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/Type.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/TypeData.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/TypeData.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/TypeData.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/TypeData.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/TypeId.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/TypeId.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/TypeId.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/TypeId.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/VoidType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/VoidType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/model/VoidType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/model/VoidType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/AliasResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/AliasResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/AliasResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/AliasResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/Annotations.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/Annotations.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/Annotations.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/Annotations.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/AnyResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/AnyResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/AnyResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/AnyResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ArrayResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ArrayResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ArrayResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ArrayResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/BooleanResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/BooleanResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/BooleanResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/BooleanResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ClassNames.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ClassNames.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ClassNames.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ClassNames.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/FunctionResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/FunctionResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/FunctionResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/FunctionResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/GenericObjectResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/GenericObjectResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/GenericObjectResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/GenericObjectResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NativeModuleResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NativeModuleResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NativeModuleResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NativeModuleResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NullableResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NullableResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NullableResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NullableResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NumberResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NumberResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/NumberResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/NumberResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ObjectResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ObjectResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ObjectResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ObjectResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/PromiseResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/PromiseResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/PromiseResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/PromiseResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ReactClassNames.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ReactClassNames.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ReactClassNames.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ReactClassNames.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ReservedFunctionValueResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ReservedFunctionValueResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ReservedFunctionValueResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ReservedFunctionValueResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/ResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/ResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/StringResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/StringResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/StringResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/StringResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/TypeResolver.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/TypeResolver.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/TypeResolver.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/TypeResolver.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/TypeUtils.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/TypeUtils.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/TypeUtils.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/TypeUtils.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/VoidResolvedType.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/VoidResolvedType.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/generator/resolver/VoidResolvedType.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/generator/resolver/VoidResolvedType.java diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java similarity index 69% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java index dc760c3f170..f4b5669f402 100644 --- a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java +++ b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/plugin/CodegenPlugin.java @@ -12,17 +12,19 @@ import com.facebook.react.codegen.generator.JavaGenerator; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.io.File; +import java.io.IOException; +import org.apache.tools.ant.taskdefs.condition.Os; import org.gradle.api.GradleException; -import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.tasks.Exec; +import org.gradle.api.tasks.TaskProvider; /** * A Gradle plugin to enable react-native-codegen in Gradle environment. See the Gradle API docs for * more information: https://docs.gradle.org/6.5.1/javadoc/org/gradle/api/Project.html */ -public class CodegenPlugin implements Plugin { +public class CodegenPlugin { public void apply(final Project project) { final CodegenPluginExtension extension = @@ -35,6 +37,57 @@ public class CodegenPlugin implements Plugin { // 2. Task: produce schema from JS files. String os = System.getProperty("os.name").toLowerCase(); + TaskProvider buildCodegenTask = + project + .getTasks() + .register( + "buildCodegenCLI", + Exec.class, + task -> { + // This task is required when using react-native-codegen from source, instead of + // npm. + File codegenRoot = extension.codegenDir(); + + task.getInputs() + .files( + project.file(new File(codegenRoot, "scripts")), + project.file(new File(codegenRoot, "src")), + project.file(new File(codegenRoot, "package.json")), + project.file(new File(codegenRoot, ".babelrc")), + project.file(new File(codegenRoot, ".prettierrc"))); + + File libDir = project.file(new File(codegenRoot, "lib")); + File nodeModulesDir = project.file(new File(codegenRoot, "node_modules")); + task.getOutputs().dirs(libDir, nodeModulesDir); + + task.onlyIf( + spec -> { + File cliDir = new File(codegenRoot, "lib/cli/"); + return !cliDir.exists() || cliDir.listFiles().length == 0; + }); + + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + // Convert path to Linux format: use canonical path to strip it off relative + // elements in the middle of the string. + // Then replace baskslashes with slashes, remove leading colon, add leading + // slash. + // Eg. D:\path1\sub2/.. -> /D/path1/path2 + try { + String canonicalPath = codegenRoot.getCanonicalPath(); + String linuxPath = "/" + canonicalPath.replace('\\', '/').replace(":", ""); + + // Get the location of bash in the system; assume environment variable created + // to store it. + String bashHome = System.getenv("REACT_WINDOWS_BASH"); + task.commandLine(bashHome, "-c", linuxPath + "/scripts/oss/build.sh"); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + task.commandLine(codegenRoot.getAbsolutePath() + "/scripts/oss/build.sh"); + } + }); + project .getTasks() .register( @@ -42,7 +95,7 @@ public class CodegenPlugin implements Plugin { Exec.class, task -> { // This is needed when using codegen from source, not from npm. - task.dependsOn(":packages:react-native-codegen:android:buildCodegenCLI"); + task.dependsOn(buildCodegenTask); task.doFirst( s -> { diff --git a/packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/plugin/CodegenPluginExtension.java b/packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/plugin/CodegenPluginExtension.java similarity index 100% rename from packages/react-native-codegen/android/src/main/java/com/facebook/react/codegen/plugin/CodegenPluginExtension.java rename to packages/react-native-gradle-plugin/src/main/java/com/facebook/react/codegen/plugin/CodegenPluginExtension.java diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppExtension.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppExtension.kt index 4bb65954da3..18bb5426d96 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppExtension.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppExtension.kt @@ -12,6 +12,7 @@ import java.io.File import org.gradle.api.Project open class ReactAppExtension(private val project: Project) { + var applyAppPlugin: Boolean = false var composeSourceMapsPath: String = "node_modules/react-native/scripts/compose-source-maps.js" var bundleAssetName: String = "index.android.bundle" var entryFile: File? = null diff --git a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppPlugin.kt b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppPlugin.kt index 54ff34e5095..033ec4b27c5 100644 --- a/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppPlugin.kt +++ b/packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactAppPlugin.kt @@ -10,25 +10,37 @@ package com.facebook.react import com.android.build.gradle.AppExtension import com.android.build.gradle.BaseExtension import com.android.build.gradle.LibraryExtension +import com.facebook.react.codegen.plugin.CodegenPlugin import org.gradle.api.Plugin import org.gradle.api.Project class ReactAppPlugin : Plugin { override fun apply(project: Project) { + applyAppPlugin(project) + applyCodegenPlugin(project) + } + + private fun applyAppPlugin(project: Project) { val config = project.extensions.create("reactApp", ReactAppExtension::class.java, project) - project.afterEvaluate { - val androidConfiguration = project.extensions.getByType(BaseExtension::class.java) - project.configureDevPorts(androidConfiguration) + if (config.applyAppPlugin) { + project.afterEvaluate { + val androidConfiguration = project.extensions.getByType(BaseExtension::class.java) + project.configureDevPorts(androidConfiguration) - val isAndroidLibrary = project.plugins.hasPlugin("com.android.library") - val variants = - if (isAndroidLibrary) { - project.extensions.getByType(LibraryExtension::class.java).libraryVariants - } else { - project.extensions.getByType(AppExtension::class.java).applicationVariants - } - variants.all { project.configureReactTasks(variant = it, config = config) } + val isAndroidLibrary = project.plugins.hasPlugin("com.android.library") + val variants = + if (isAndroidLibrary) { + project.extensions.getByType(LibraryExtension::class.java).libraryVariants + } else { + project.extensions.getByType(AppExtension::class.java).applicationVariants + } + variants.all { project.configureReactTasks(variant = it, config = config) } + } } } + + private fun applyCodegenPlugin(project: Project) { + CodegenPlugin().apply(project) + } } diff --git a/packages/rn-tester/android/app/build.gradle b/packages/rn-tester/android/app/build.gradle index 75315af673f..eea01337395 100644 --- a/packages/rn-tester/android/app/build.gradle +++ b/packages/rn-tester/android/app/build.gradle @@ -7,8 +7,7 @@ plugins { id("com.android.application") - id("com.facebook.react.codegen") - id("com.facebook.react.app") + id("com.facebook.react") } /** @@ -77,6 +76,7 @@ plugins { */ reactApp { + applyAppPlugin = true cliPath = "../../../../cli.js" bundleAssetName = "RNTesterApp.android.bundle" entryFile = file("../../js/RNTesterApp.android.js") diff --git a/settings.gradle.kts b/settings.gradle.kts index f804e186f97..2075d4e9699 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,7 +20,6 @@ include( ) // Include this to enable codegen Gradle plugin. -includeBuild("packages/react-native-codegen/android") includeBuild("packages/react-native-gradle-plugin/") // Include this to build the Android template as well and make sure is not broken.