From 71fbf519794c85346edf0dfc44aed4ff9a7dcc73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Tue, 4 Mar 2025 07:38:18 -0800 Subject: [PATCH] Migrate `ReactNativeVersion` Android template to Kotlin (#49758) Summary: Added a new template `ReactNativeVersion.kt-template.js` to be used to generate the Kotlin template for Android. Updating also the set-rn-artifacts-version script to use this template instead of the Java one. ## Changelog: [INTERNAL] - Migrate ReactNativeVersion Android template to Kotlin Pull Request resolved: https://github.com/facebook/react-native/pull/49758 Test Plan: ```bash yarn test-android yarn android node ./scripts/releases/set-version.js 1000.0.0 ``` Reviewed By: huntie, rshest Differential Revision: D70486775 Pulled By: cortinico fbshipit-source-id: 5dd1e0e2ecf4d848dc24e6c47df243a1259ab559 --- .../ReactAndroid/api/ReactAndroid.api | 4 +- .../systeminfo/ReactNativeVersion.java | 22 ---------- .../modules/systeminfo/ReactNativeVersion.kt | 20 +++++++++ .../set-rn-artifacts-version-test.js.snap | 44 +++++++++---------- .../__snapshots__/set-version-test.js.snap | 6 +-- scripts/releases/set-rn-artifacts-version.js | 4 +- ...e.js => ReactNativeVersion.kt-template.js} | 24 +++++----- 7 files changed, 58 insertions(+), 66 deletions(-) delete mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java create mode 100644 packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt rename scripts/releases/templates/{ReactNativeVersion.java-template.js => ReactNativeVersion.kt-template.js} (59%) diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 4e14ceccf7e..1400e4657e7 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -3345,9 +3345,9 @@ public final class com/facebook/react/modules/systeminfo/AndroidInfoModule : com public fun invalidate ()V } -public class com/facebook/react/modules/systeminfo/ReactNativeVersion { +public final class com/facebook/react/modules/systeminfo/ReactNativeVersion { + public static final field INSTANCE Lcom/facebook/react/modules/systeminfo/ReactNativeVersion; public static final field VERSION Ljava/util/Map; - public fun ()V } public final class com/facebook/react/modules/toast/ToastModule : com/facebook/fbreact/specs/NativeToastAndroidSpec { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java deleted file mode 100644 index dd881ce78ca..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @generated by scripts/releases/set-version.js - */ - -package com.facebook.react.modules.systeminfo; - -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - "major", 1000, - "minor", 0, - "patch", 0, - "prerelease", null); -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt new file mode 100644 index 00000000000..2405d32ce68 --- /dev/null +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @generated by scripts/releases/set-version.js + */ + +package com.facebook.react.modules.systeminfo + +public object ReactNativeVersion { + @JvmField + public val VERSION: Map = mapOf( + "major" to 1000, + "minor" to 0, + "patch" to 0, + "prerelease" to null + ) +} diff --git a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap index 407c8dc7f8c..9b49b2b57a9 100644 --- a/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-rn-artifacts-version-test.js.snap @@ -65,7 +65,7 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n " `; -exports[`updateReactNativeArtifacts should set nightly version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = ` +exports[`updateReactNativeArtifacts should set nightly version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = ` "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * @@ -75,18 +75,16 @@ exports[`updateReactNativeArtifacts should set nightly version: packages/react-n * << GENERATED >> */ -package com.facebook.react.modules.systeminfo; +package com.facebook.react.modules.systeminfo -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - \\"major\\", 0, - \\"minor\\", 81, - \\"patch\\", 0, - \\"prerelease\\", \\"nightly-29282302-abcd1234\\"); +public object ReactNativeVersion { + @JvmField + public val VERSION: Map = mapOf( + \\"major\\" to 0, + \\"minor\\" to 81, + \\"patch\\" to 0, + \\"prerelease\\" to \\"nightly-29282302-abcd1234\\" + ) } " `; @@ -188,7 +186,7 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n " `; -exports[`updateReactNativeArtifacts should set release version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = ` +exports[`updateReactNativeArtifacts should set release version: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = ` "/** * Copyright (c) Meta Platforms, Inc. and affiliates. * @@ -198,18 +196,16 @@ exports[`updateReactNativeArtifacts should set release version: packages/react-n * << GENERATED >> */ -package com.facebook.react.modules.systeminfo; +package com.facebook.react.modules.systeminfo -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - \\"major\\", 0, - \\"minor\\", 81, - \\"patch\\", 0, - \\"prerelease\\", null); +public object ReactNativeVersion { + @JvmField + public val VERSION: Map = mapOf( + \\"major\\" to 0, + \\"minor\\" to 81, + \\"patch\\" to 0, + \\"prerelease\\" to null + ) } " `; diff --git a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap index 8bb8f5b58bd..ac25c8afc57 100644 --- a/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap +++ b/scripts/releases/__tests__/__snapshots__/set-version-test.js.snap @@ -61,7 +61,7 @@ exports[`setVersion updates monorepo for nightly: set-version/packages/react-nat exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for nightly: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; @@ -142,7 +142,7 @@ exports[`setVersion updates monorepo for release-candidate: set-version/packages exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for release-candidate: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; @@ -223,7 +223,7 @@ exports[`setVersion updates monorepo for stable version: set-version/packages/re exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/gradle.properties 1`] = `"[omitted]"`; -exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java 1`] = `"[omitted]"`; +exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt 1`] = `"[omitted]"`; exports[`setVersion updates monorepo for stable version: set-version/packages/react-native/ReactCommon/cxxreact/ReactNativeVersion.h 1`] = `"[omitted]"`; diff --git a/scripts/releases/set-rn-artifacts-version.js b/scripts/releases/set-rn-artifacts-version.js index 78b52dc88c6..58557dbb97a 100755 --- a/scripts/releases/set-rn-artifacts-version.js +++ b/scripts/releases/set-rn-artifacts-version.js @@ -91,9 +91,9 @@ function updateSourceFiles( fs.writeFile( path.join( REPO_ROOT, - 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java', + 'packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt', ), - require('./templates/ReactNativeVersion.java-template')(templateData), + require('./templates/ReactNativeVersion.kt-template')(templateData), ), fs.writeFile( path.join(REPO_ROOT, 'packages/react-native/React/Base/RCTVersion.m'), diff --git a/scripts/releases/templates/ReactNativeVersion.java-template.js b/scripts/releases/templates/ReactNativeVersion.kt-template.js similarity index 59% rename from scripts/releases/templates/ReactNativeVersion.java-template.js rename to scripts/releases/templates/ReactNativeVersion.kt-template.js index ef2afc04ed4..11a950a9c85 100644 --- a/scripts/releases/templates/ReactNativeVersion.java-template.js +++ b/scripts/releases/templates/ReactNativeVersion.kt-template.js @@ -22,19 +22,17 @@ module.exports = ({version} /*: {version: Version} */) /*: string */ => `/** * ${'@'}generated by scripts/releases/set-version.js */ -package com.facebook.react.modules.systeminfo; +package com.facebook.react.modules.systeminfo -import com.facebook.react.common.MapBuilder; - -import java.util.Map; - -public class ReactNativeVersion { - public static final Map VERSION = MapBuilder.of( - "major", ${version.major}, - "minor", ${version.minor}, - "patch", ${version.patch}, - "prerelease", ${ - version.prerelease != null ? `"${version.prerelease}"` : 'null' - }); +public object ReactNativeVersion { + @JvmField + public val VERSION: Map = mapOf( + "major" to ${version.major}, + "minor" to ${version.minor}, + "patch" to ${version.patch}, + "prerelease" to ${ + version.prerelease != null ? `"${version.prerelease}"` : 'null' + } + ) } `;