1
1
const { sep } = require ( 'path' ) ;
2
2
const { execSync } = require ( 'child_process' ) ;
3
3
const { readFileSync, writeFileSync } = require ( 'fs' ) ;
4
+ const { exit } = require ( 'process' ) ;
4
5
5
6
const packages = JSON . parse ( execSync ( 'npx lerna ls --json' ) . toString ( 'utf-8' ) ) ;
6
7
7
8
const firebaseAppPackageName = '@react-native-firebase/app' ;
8
- const firebaseAppPackageVersion = packages . find ( package => package . name == firebaseAppPackageName )
9
- . version ;
9
+ const lernaVersion = JSON . parse ( readFileSync ( 'lerna.json' ) ) . version ;
10
+ console . log ( `Found lerna version: ${ lernaVersion } ` ) ;
10
11
11
12
packages . forEach ( package => {
12
13
if ( package . name == firebaseAppPackageName ) {
@@ -19,28 +20,41 @@ packages.forEach(package => {
19
20
// ---------------------------
20
21
const packageJsonPath = `${ location } ${ sep } /package.json` ;
21
22
const packageJsonContents = JSON . parse ( readFileSync ( packageJsonPath ) . toString ( 'utf-8' ) ) ;
22
- if ( ! packageJsonContents . peerDependencies ) {
23
- return ;
24
- }
25
- if ( ! packageJsonContents . peerDependencies [ firebaseAppPackageName ] ) {
26
- return ;
23
+
24
+ // Make sure that the app package has the correct version, it has been failing periodically
25
+ if ( ! packageJsonContents . version === lernaVersion ) {
26
+ console . log (
27
+ `app package version ${ packageJsonContents . version } but should be ${ lernaVersion } ? Exiting.` ,
28
+ ) ;
29
+ exit ( 1 ) ;
27
30
}
28
- if ( packageJsonContents . peerDependencies [ firebaseAppPackageName ] === firebaseAppPackageVersion ) {
31
+ // console.log(`Examining package ${package.name} for local peerDepencenies...`);
32
+
33
+ if ( ! packageJsonContents . peerDependencies ) {
29
34
return ;
30
35
}
31
36
32
- packageJsonContents . peerDependencies [ firebaseAppPackageName ] = firebaseAppPackageVersion ;
37
+ packages . forEach ( possiblePeerDependency => {
38
+ // console.log(` checking for cross-dependency on ${possiblePeerDependency.name}`);
39
+ if ( ! packageJsonContents . peerDependencies [ possiblePeerDependency . name ] ) {
40
+ return ;
41
+ }
42
+ if ( packageJsonContents . peerDependencies [ possiblePeerDependency . name ] === lernaVersion ) {
43
+ return ;
44
+ }
33
45
34
- writeFileSync ( packageJsonPath , JSON . stringify ( packageJsonContents , null , 2 ) + '\n' ) ;
46
+ packageJsonContents . peerDependencies [ possiblePeerDependency . name ] = lernaVersion ;
35
47
36
- execSync ( `git add ${ packageJsonPath } ` ) ;
48
+ writeFileSync ( packageJsonPath , JSON . stringify ( packageJsonContents , null , 2 ) + '\n' ) ;
37
49
38
- execSync ( `git commit -m "build( ${ packageJsonContents . name . replace ( '@react-native-firebase/' , '' ) } ): update core peer dependency to v ${ firebaseAppPackageVersion } [publish]" ` ) ;
50
+ execSync ( `git add ${ packageJsonPath } ` ) ;
39
51
40
- console . log (
41
- `Updated '${ firebaseAppPackageName } ' peer dependency on package` ,
42
- packageJsonContents . name ,
43
- 'to' ,
44
- packageJsonContents . peerDependencies [ firebaseAppPackageName ] ,
45
- ) ;
52
+ console . log (
53
+ `Updated '${ possiblePeerDependency . name } ' peer dependency on package` ,
54
+ packageJsonContents . name ,
55
+ 'to' ,
56
+ packageJsonContents . peerDependencies [ possiblePeerDependency . name ] ,
57
+ ) ;
58
+ } ) ;
46
59
} ) ;
60
+ execSync ( `git commit -a -m "build: updated peer dependencies to v${ lernaVersion } [publish]"` ) ;
0 commit comments