1
1
const { join } = require ( "path" ) ;
2
2
const { copySync, ensureDirSync } = require ( "fs-extra" ) ;
3
- const { readdirSync, lstatSync, readFileSync, existsSync } = require ( "fs" ) ;
3
+ const {
4
+ readdirSync,
5
+ lstatSync,
6
+ readFileSync,
7
+ existsSync,
8
+ writeFileSync
9
+ } = require ( "fs" ) ;
4
10
const { CODE_GEN_OUTPUT_DIR } = require ( "./code-gen-dir" ) ;
5
11
6
12
const getOverwritablePredicate = packageName => pathName => {
@@ -12,6 +18,7 @@ const getOverwritablePredicate = packageName => pathName => {
12
18
"runtimeConfig.ts" ,
13
19
"runtimeConfig.browser.ts" ,
14
20
"runtimeConfig.shared.ts" ,
21
+ "runtimeConfig.rn.ts" ,
15
22
"index.ts" ,
16
23
"endpoints.ts"
17
24
] ;
@@ -25,6 +32,28 @@ const getOverwritablePredicate = packageName => pathName => {
25
32
) ;
26
33
} ;
27
34
35
+ const mergeManifest = ( fromContent , toContent ) => {
36
+ const merged = { } ;
37
+ const toNames = Object . keys ( toContent ) ;
38
+ for ( const name of toNames ) {
39
+ if ( ! fromContent [ name ] ) {
40
+ merged [ name ] = toContent [ name ] ;
41
+ continue ;
42
+ }
43
+ if ( typeof toContent [ name ] === "object" ) {
44
+ merged [ name ] = mergeManifest ( fromContent [ name ] , toContent [ name ] ) ;
45
+ } else {
46
+ merged [ name ] = toContent [ name ] || fromContent [ name ] ;
47
+ }
48
+ }
49
+ for ( const name of Object . keys ( fromContent ) ) {
50
+ if ( toNames . indexOf ( name ) < 0 ) {
51
+ merged [ name ] = fromContent [ name ] ;
52
+ }
53
+ }
54
+ return merged ;
55
+ } ;
56
+
28
57
async function copyToClients ( clientsDir ) {
29
58
for ( const modelName of readdirSync ( CODE_GEN_OUTPUT_DIR ) ) {
30
59
if ( modelName === "source" ) continue ;
@@ -56,6 +85,12 @@ async function copyToClients(clientsDir) {
56
85
overwrite : true
57
86
} ) ;
58
87
}
88
+ if ( packageSub === "package.json" ) {
89
+ //copy manifest file
90
+ const destManifest = JSON . parse ( readFileSync ( destSubPath ) . toString ( ) ) ;
91
+ const mergedManifest = mergeManifest ( packageManifest , destManifest ) ;
92
+ writeFileSync ( destSubPath , JSON . stringify ( mergedManifest , null , 2 ) ) ;
93
+ }
59
94
}
60
95
}
61
96
}
0 commit comments