1- // Sync manifest.json version with package.json
1+ // Sync manifest.json and server.json versions with package.json
22const fs = require ( 'node:fs' ) ;
33const path = require ( 'node:path' ) ;
44
5- function syncManifestVersion ( ) {
5+ /**
6+ * Pure function that syncs versions across config objects
7+ * @param {Object } packageJson - The package.json object
8+ * @param {Object } manifestJson - The manifest.json object
9+ * @param {Object } serverJson - The server.json object
10+ * @returns {Object } Result containing updated configs and change information
11+ */
12+ function syncVersionsCore ( packageJson , manifestJson , serverJson ) {
13+ const packageVersion = packageJson . version ;
14+ const result = {
15+ packageVersion,
16+ updatedManifest : null ,
17+ updatedServer : null ,
18+ changes : {
19+ manifest : false ,
20+ server : false ,
21+ serverPackage : false
22+ } ,
23+ oldVersions : {
24+ manifest : manifestJson . version ,
25+ server : serverJson . version ,
26+ serverPackage : serverJson . packages ?. [ 0 ] ?. version
27+ }
28+ } ;
29+
30+ // Check and update manifest.json
31+ if ( manifestJson . version !== packageVersion ) {
32+ result . updatedManifest = { ...manifestJson , version : packageVersion } ;
33+ result . changes . manifest = true ;
34+ }
35+
36+ // Check and update server.json
37+ const serverNeedsUpdate = serverJson . version !== packageVersion ;
38+ const packageNeedsUpdate = serverJson . packages ?. [ 0 ] &&
39+ serverJson . packages [ 0 ] . version !== packageVersion ;
40+
41+ if ( serverNeedsUpdate || packageNeedsUpdate ) {
42+ result . updatedServer = JSON . parse ( JSON . stringify ( serverJson ) ) ; // Deep clone
43+
44+ if ( serverNeedsUpdate ) {
45+ result . updatedServer . version = packageVersion ;
46+ result . changes . server = true ;
47+ }
48+
49+ if ( packageNeedsUpdate ) {
50+ result . updatedServer . packages [ 0 ] . version = packageVersion ;
51+ result . changes . serverPackage = true ;
52+ }
53+ }
54+
55+ return result ;
56+ }
57+
58+ function syncVersions ( ) {
659 const packageJsonPath = path . join ( process . cwd ( ) , 'package.json' ) ;
760 const manifestJsonPath = path . join ( process . cwd ( ) , 'manifest.json' ) ;
61+ const serverJsonPath = path . join ( process . cwd ( ) , 'server.json' ) ;
862
9- // Read package.json
63+ // Read files
1064 const packageJson = JSON . parse ( fs . readFileSync ( packageJsonPath , 'utf-8' ) ) ;
11- const packageVersion = packageJson . version ;
12-
13- // Read manifest.json
1465 const manifestJson = JSON . parse ( fs . readFileSync ( manifestJsonPath , 'utf-8' ) ) ;
15- const manifestVersion = manifestJson . version ;
66+ const serverJson = JSON . parse ( fs . readFileSync ( serverJsonPath , 'utf-8' ) ) ;
67+
68+ // Sync versions using pure function
69+ const result = syncVersionsCore ( packageJson , manifestJson , serverJson ) ;
70+
71+ let updatedFiles = [ ] ;
1672
17- // Check if versions are already in sync
18- if ( manifestVersion === packageVersion ) {
19- console . log ( `✓ Versions already in sync: ${ packageVersion } ` ) ;
20- return ;
73+ // Write updated manifest if needed
74+ if ( result . updatedManifest ) {
75+ fs . writeFileSync (
76+ manifestJsonPath ,
77+ JSON . stringify ( result . updatedManifest , null , 2 ) + '\n' ,
78+ 'utf-8'
79+ ) ;
80+ console . log (
81+ `✓ Updated manifest.json version: ${ result . oldVersions . manifest } → ${ result . packageVersion } `
82+ ) ;
83+ updatedFiles . push ( 'manifest.json' ) ;
2184 }
2285
23- // Update manifest.json version
24- manifestJson . version = packageVersion ;
25- fs . writeFileSync (
26- manifestJsonPath ,
27- JSON . stringify ( manifestJson , null , 2 ) + '\n' ,
28- 'utf-8'
29- ) ;
30-
31- console . log (
32- `✓ Updated manifest.json version: ${ manifestVersion } → ${ packageVersion } `
33- ) ;
86+ // Write updated server if needed
87+ if ( result . updatedServer ) {
88+ fs . writeFileSync (
89+ serverJsonPath ,
90+ JSON . stringify ( result . updatedServer , null , 2 ) + '\n' ,
91+ 'utf-8'
92+ ) ;
93+ console . log (
94+ `✓ Updated server.json versions: ${ result . oldVersions . server } → ${ result . packageVersion } `
95+ ) ;
96+ updatedFiles . push ( 'server.json' ) ;
97+ }
98+
99+ if ( updatedFiles . length === 0 ) {
100+ console . log ( `✓ All versions already in sync: ${ result . packageVersion } ` ) ;
101+ } else {
102+ console . log ( `✓ Synced ${ updatedFiles . join ( ', ' ) } with package.json version: ${ result . packageVersion } ` ) ;
103+ }
104+ }
105+
106+ // Export for testing
107+ if ( typeof module !== 'undefined' && module . exports ) {
108+ module . exports = { syncVersionsCore, syncVersions } ;
34109}
35110
36- syncManifestVersion ( ) ;
111+ // Run if called directly
112+ if ( require . main === module ) {
113+ syncVersions ( ) ;
114+ }
0 commit comments