Skip to content

Commit 6dde1dc

Browse files
cortinicofacebook-github-bot
authored andcommitted
RNGP - ENTRY_FILE should resolve relative paths from root (#36193)
Summary: Pull Request resolved: #36193 Fixes #36186 Changelog: [Android] [Fixed] - ENTRY_FILE should resolve relative paths from root Reviewed By: cipolleschi Differential Revision: D43392121 fbshipit-source-id: ddf302d333c5fc5f822e0635a73e5b52470140ee
1 parent e42dd15 commit 6dde1dc

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/TaskConfiguration.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,14 @@ internal fun Project.configureReactTasks(variant: Variant, config: ReactExtensio
5151
configureJsEnginePackagingOptions(config, variant, isHermesEnabledInThisVariant)
5252

5353
if (!isDebuggableVariant) {
54+
val entryFileEnvVariable = System.getenv("ENTRY_FILE")
5455
val bundleTask =
5556
tasks.register("createBundle${targetName}JsAndAssets", BundleHermesCTask::class.java) {
5657
it.root.set(config.root)
5758
it.nodeExecutableAndArgs.set(config.nodeExecutableAndArgs)
5859
it.cliFile.set(cliFile)
5960
it.bundleCommand.set(config.bundleCommand)
60-
it.entryFile.set(detectedEntryFile(config))
61+
it.entryFile.set(detectedEntryFile(config, entryFileEnvVariable))
6162
it.extraPackagerArgs.set(config.extraPackagerArgs)
6263
it.bundleConfig.set(config.bundleConfig)
6364
it.bundleAssetName.set(config.bundleAssetName)

packages/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/PathUtils.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ import org.gradle.api.file.DirectoryProperty
2525
*
2626
* @param config The [ReactExtension] configured for this project
2727
*/
28-
internal fun detectedEntryFile(config: ReactExtension): File =
28+
internal fun detectedEntryFile(config: ReactExtension, envVariableOverride: String? = null): File =
2929
detectEntryFile(
30-
entryFile = config.entryFile.orNull?.asFile, reactRoot = config.root.get().asFile)
30+
entryFile = config.entryFile.orNull?.asFile,
31+
reactRoot = config.root.get().asFile,
32+
envVariableOverride = envVariableOverride)
3133

3234
/**
3335
* Computes the CLI file for React Native. The Algo follows this order:
@@ -54,9 +56,13 @@ internal fun detectedCliFile(config: ReactExtension): File =
5456
internal fun detectedHermesCommand(config: ReactExtension): String =
5557
detectOSAwareHermesCommand(config.root.get().asFile, config.hermesCommand.get())
5658

57-
private fun detectEntryFile(entryFile: File?, reactRoot: File): File =
59+
private fun detectEntryFile(
60+
entryFile: File?,
61+
reactRoot: File,
62+
envVariableOverride: String? = null
63+
): File =
5864
when {
59-
System.getenv("ENTRY_FILE") != null -> File(System.getenv("ENTRY_FILE"))
65+
envVariableOverride != null -> File(reactRoot, envVariableOverride)
6066
entryFile != null -> entryFile
6167
File(reactRoot, "index.android.js").exists() -> File(reactRoot, "index.android.js")
6268
else -> File(reactRoot, "index.js")

packages/react-native-gradle-plugin/src/test/kotlin/com/facebook/react/utils/PathUtilsTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,20 @@ class PathUtilsTest {
5757
assertEquals(File(tempFolder.root, "index.js"), actual)
5858
}
5959

60+
@Test
61+
fun detectedEntryFile_withEnvironmentVariable() {
62+
val extension = TestReactExtension(ProjectBuilder.builder().build())
63+
val expected = tempFolder.newFile("./fromenv.index.js")
64+
// As we can't override env variable for tests, we're going to emulate them here.
65+
val envVariable = "./fromenv.index.js"
66+
67+
extension.root.set(tempFolder.root)
68+
69+
val actual = detectedEntryFile(extension, envVariable)
70+
71+
assertEquals(expected, actual)
72+
}
73+
6074
@Test
6175
fun detectedCliPath_withCliPathFromExtensionAndFileExists_returnsIt() {
6276
val project = ProjectBuilder.builder().build()

0 commit comments

Comments
 (0)