react-native-code-push-plugin
Version:
Config plugin to auto configure react-native-code-push on prebuild
46 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withAndroidBuildscriptDependency = void 0;
const config_plugins_1 = require("expo/config-plugins");
const addBelowAnchorIfNotFound_1 = require("../utils/addBelowAnchorIfNotFound");
function applyImplementation(appBuildGradle) {
const codePushImplementation = 'apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"';
// Make sure the project does not have the dependency already
if (appBuildGradle.includes(codePushImplementation)) {
return appBuildGradle;
}
// The default on Expo 50
const reactNative73Include = `apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle");`;
if (appBuildGradle.includes(reactNative73Include)) {
return (0, addBelowAnchorIfNotFound_1.addBelowAnchorIfNotFound)(appBuildGradle, reactNative73Include, codePushImplementation);
}
// Seems to be the default on Expo 49
const reactNative71Include = `apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle");`;
if (appBuildGradle.includes(reactNative71Include)) {
return (0, addBelowAnchorIfNotFound_1.addBelowAnchorIfNotFound)(appBuildGradle, reactNative71Include, codePushImplementation);
}
// For compatibility
const reactNativeFileClassGradleInclude = `'apply from: new File(reactNativeRoot, "react.gradle")`;
if (appBuildGradle.includes(reactNativeFileClassGradleInclude)) {
return (0, addBelowAnchorIfNotFound_1.addBelowAnchorIfNotFound)(appBuildGradle, reactNativeFileClassGradleInclude, codePushImplementation);
}
// For compatibility
const reactNativeRawGradleInclude = `apply from: "../../node_modules/react-native/react.gradle"`;
if (appBuildGradle.includes(reactNativeRawGradleInclude)) {
return (0, addBelowAnchorIfNotFound_1.addBelowAnchorIfNotFound)(appBuildGradle, reactNativeRawGradleInclude, codePushImplementation);
}
throw new Error("Cannot find a suitable place to insert the CodePush buildscript dependency.");
}
/**
* Update `<project>/build.gradle` by adding the codepush.gradle file
* as an additional build task definition underneath react.gradle
* https://github.com/microsoft/react-native-code-push/blob/master/docs/setup-android.md#plugin-installation-and-configuration-for-react-nactive-060-version-and-above-android
*/
const withAndroidBuildscriptDependency = (config) => {
return (0, config_plugins_1.withAppBuildGradle)(config, (buildGradleProps) => {
buildGradleProps.modResults.contents = applyImplementation(buildGradleProps.modResults.contents);
return buildGradleProps;
});
};
exports.withAndroidBuildscriptDependency = withAndroidBuildscriptDependency;
//# sourceMappingURL=buildscriptDependency.js.map