mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/49212 Currently, developers can't use `popup-menu-android` at all because the Gradle file we publish is referencing internal machinery. I'm adding a pre-publish script that manipulates the Gradle. This is the easiest solution without having to do crazy setup inside RNGP or having duplicated version codes around in the monorepo. Fixes https://github.com/facebook/react-native/issues/49112 Changelog: [Android] [Fixed] - Fix react-native/popup-menu-android not building for 3rd party developers Reviewed By: cipolleschi Differential Revision: D69192874 fbshipit-source-id: 9f9e8a0a6e76308e598a09f4c70dbc659c238b00
47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
/*
|
|
* This script is used to update the android/build.gradle.kts file
|
|
* with the versions from the libs.versions.toml file.
|
|
*
|
|
* This is needed because this package is consumed from source from
|
|
* external users and we don't want to have several SDK version around to
|
|
* maintain.
|
|
*
|
|
* It's invoked as a prepublish script for this package.
|
|
*/
|
|
|
|
function extractVersion(tomlContent, regex) {
|
|
const match = tomlContent.match(regex);
|
|
return match && match[1] ? match[1] : null;
|
|
}
|
|
|
|
const fs = require('fs');
|
|
|
|
const buildGradleKtsPath = 'android/build.gradle.kts';
|
|
const libsVersionsTomlPath = '../react-native/gradle/libs.versions.toml';
|
|
|
|
console.log(`Updating ${buildGradleKtsPath} with versions from ${libsVersionsTomlPath}...`);
|
|
|
|
let gradleContent = fs.readFileSync(buildGradleKtsPath, 'utf8');
|
|
const tomlContent = fs.readFileSync(libsVersionsTomlPath, 'utf8');
|
|
|
|
const compileSdk = extractVersion(tomlContent, /compileSdk\s*=\s*"(\d+)"/);
|
|
const minSdk = extractVersion(tomlContent, /minSdk\s*=\s*"(\d+)"/);
|
|
const buildTools = extractVersion(tomlContent, /buildTools\s*=\s*"([\d.]+)"/);
|
|
|
|
gradleContent = gradleContent
|
|
.replace('libs.versions.compileSdk.get().toInt()', compileSdk)
|
|
.replace('libs.versions.minSdk.get().toInt()', minSdk)
|
|
.replace('libs.versions.buildTools.get()', `"${buildTools}"`)
|
|
.replace('project(":packages:react-native:ReactAndroid")', '"com.facebook.react:react-android"');
|
|
|
|
fs.writeFileSync(buildGradleKtsPath, gradleContent);
|
|
|
|
console.log('Done!');
|