1
1
import { withAppBuildGradle , withProjectBuildGradle } from '@expo/config-plugins' ;
2
+ import type { ExpoConfig } from '@expo/config-types' ;
2
3
3
4
import { warnOnce } from './utils' ;
4
5
@@ -20,7 +21,7 @@ export const sentryAndroidGradlePluginVersion = '5.9.0';
20
21
* https://docs.sentry.io/platforms/react-native/manual-setup/manual-setup/#enable-sentry-agp
21
22
*/
22
23
export function withSentryAndroidGradlePlugin (
23
- config : any ,
24
+ config : ExpoConfig ,
24
25
{
25
26
includeProguardMapping = true ,
26
27
dexguardEnabled = false ,
@@ -30,40 +31,34 @@ export function withSentryAndroidGradlePlugin(
30
31
includeNativeSources = true ,
31
32
includeSourceContext = false ,
32
33
} : SentryAndroidGradlePluginOptions = { } ,
33
- ) : any {
34
+ ) : ExpoConfig {
34
35
// Modify android/build.gradle
35
- const withSentryProjectBuildGradle = ( config : any ) : any => {
36
- return withProjectBuildGradle ( config , ( projectBuildGradle : any ) => {
37
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
36
+ const withSentryProjectBuildGradle = ( config : ExpoConfig ) : ExpoConfig => {
37
+ return withProjectBuildGradle ( config , projectBuildGradle => {
38
38
if ( ! projectBuildGradle . modResults || ! projectBuildGradle . modResults . contents ) {
39
39
warnOnce ( 'android/build.gradle content is missing or undefined.' ) ;
40
- return config ;
40
+ return projectBuildGradle ;
41
41
}
42
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
43
42
if ( projectBuildGradle . modResults . language !== 'groovy' ) {
44
43
warnOnce ( 'Cannot configure Sentry in android/build.gradle because it is not in Groovy.' ) ;
45
- return config ;
44
+ return projectBuildGradle ;
46
45
}
47
46
48
47
const dependency = `classpath("io.sentry:sentry-android-gradle-plugin:${ sentryAndroidGradlePluginVersion } ")` ;
49
48
50
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
51
49
if ( projectBuildGradle . modResults . contents . includes ( dependency ) ) {
52
50
warnOnce ( 'sentry-android-gradle-plugin dependency in already in android/build.gradle.' ) ;
53
- return config ;
51
+ return projectBuildGradle ;
54
52
}
55
53
56
54
try {
57
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
58
55
const updatedContents = projectBuildGradle . modResults . contents . replace (
59
56
/ d e p e n d e n c i e s \s * { / ,
60
57
`dependencies {\n ${ dependency } ` ,
61
58
) ;
62
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
63
59
if ( updatedContents === projectBuildGradle . modResults . contents ) {
64
60
warnOnce ( 'Failed to inject the dependency. Could not find `dependencies` in build.gradle.' ) ;
65
61
} else {
66
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
67
62
projectBuildGradle . modResults . contents = updatedContents ;
68
63
}
69
64
} catch ( error ) {
@@ -74,12 +69,11 @@ export function withSentryAndroidGradlePlugin(
74
69
} ;
75
70
76
71
// Modify android/app/build.gradle
77
- const withSentryAppBuildGradle = ( config : any ) : any => {
78
- return withAppBuildGradle ( config , ( config : any ) => {
79
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
80
- if ( config . modResults . language !== 'groovy' ) {
72
+ const withSentryAppBuildGradle = ( config : ExpoConfig ) : ExpoConfig => {
73
+ return withAppBuildGradle ( config , appBuildGradle => {
74
+ if ( appBuildGradle . modResults . language !== 'groovy' ) {
81
75
warnOnce ( 'Cannot configure Sentry in android/app/build.gradle because it is not in Groovy.' ) ;
82
- return config ;
76
+ return appBuildGradle ;
83
77
}
84
78
const sentryPlugin = `apply plugin: "io.sentry.android.gradle"` ;
85
79
const sentryConfig = `
@@ -99,22 +93,18 @@ export function withSentryAndroidGradlePlugin(
99
93
}
100
94
}` ;
101
95
102
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
103
- let contents = config . modResults . contents ;
96
+ let contents = appBuildGradle . modResults . contents ;
104
97
105
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
106
98
if ( ! contents . includes ( sentryPlugin ) ) {
107
99
contents = `${ sentryPlugin } \n${ contents } ` ;
108
100
}
109
101
110
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
111
102
if ( ! contents . includes ( 'sentry {' ) ) {
112
103
contents = `${ contents } \n${ sentryConfig } ` ;
113
104
}
114
105
115
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
116
- config . modResults . contents = contents ;
117
- return config ;
106
+ appBuildGradle . modResults . contents = contents ;
107
+ return appBuildGradle ;
118
108
} ) ;
119
109
} ;
120
110
0 commit comments