11const urlFetcher = require ( "../utils/url_fetcher.util" ) ;
2+ const infoService = require ( '../services/info.service' ) ;
3+ const consts = require ( '../consts' ) ;
24const { writeDownloadedFile } = require ( "../utils/installations.util" ) ;
5+ const fs = require ( 'fs/promises' ) ;
6+ const path = require ( 'path' ) ;
7+
8+ const preserveList = [
9+ "world" ,
10+ "world_nether" ,
11+ "world_the_end" ,
12+ "banned-ips.json" ,
13+ "banned-players.json" ,
14+ "ops.json" ,
15+ "whitelist.json"
16+ ] ;
17+
18+ async function purgeServer ( preserveList ) {
19+ let folderPath = consts . serverDirectory ;
20+ try {
21+ const entries = await fs . readdir ( folderPath , { withFileTypes : true } ) ;
22+
23+ for ( const entry of entries ) {
24+ if ( preserveList . includes ( entry . name ) ) continue ;
25+
26+ const fullPath = path . join ( folderPath , entry . name ) ;
27+ if ( entry . isDirectory ( ) )
28+ await fs . rm ( fullPath , { recursive : true , force : true } ) ;
29+ else
30+ await fs . unlink ( fullPath ) ;
31+ }
32+
33+ console . log ( `Deleted everything in ${ folderPath } except preserved items.` ) ;
34+ } catch ( err ) {
35+ console . error ( `Error cleaning folder ${ folderPath } :` , err . message ) ;
36+ }
37+ }
338
439async function downloadRouter ( platform , version ) {
40+ const oldPlatform = infoService . getPlatform ( ) ;
41+
42+ const comingFromModded = oldPlatform === "fabric" || oldPlatform === "forge" ;
43+ const currentPreserveList = comingFromModded
44+ ? preserveList . slice ( 3 ) // delete worlds
45+ : preserveList ; // keep everything
46+
47+ if ( oldPlatform != platform )
48+ await purgeServer ( currentPreserveList ) ;
49+
550 let response ;
651 try {
7- switch ( platform ) {
52+ switch ( platform ) {
853 case "vanilla" :
954 response = await fetch ( await urlFetcher . fetchVanillaURL ( version ) ) ;
1055 break ;
@@ -17,9 +62,10 @@ async function downloadRouter(platform, version) {
1762 case "forge" :
1863 response = await fetch ( await urlFetcher . fetchForgeURL ( version ) ) ;
1964 break ;
20- case _ :
21- throw new Error ( `Invalid platform --> ${ platform } ` )
65+ default :
66+ throw new Error ( `Invalid platform --> ${ platform } ` ) ;
2267 }
68+
2369 await writeDownloadedFile ( response , version , platform . toUpperCase ( ) ) ;
2470 } catch ( error ) {
2571 console . error ( error ) ;
0 commit comments