map-region-sync
Advanced tools
@@ -13,3 +13,15 @@ import { Command } from '@oclif/command'; | ||
| run(): Promise<void>; | ||
| /** | ||
| * Sync region using the original datas | ||
| */ | ||
| syncRegions(): Promise<void>; | ||
| /** | ||
| * Flush playerdata, stats and advancements folders | ||
| */ | ||
| flush(): Promise<void>; | ||
| /** | ||
| * Delete and pull POI files from base datas | ||
| */ | ||
| rewritePOI(): Promise<void>; | ||
| checkAccess(file: string): Promise<undefined>; | ||
| } |
+44
-1
@@ -13,3 +13,12 @@ "use strict"; | ||
| async run() { | ||
| await this.syncRegions(); | ||
| await this.flush(); | ||
| await this.rewritePOI(); | ||
| } | ||
| /** | ||
| * Sync region using the original datas | ||
| */ | ||
| async syncRegions() { | ||
| const { args: { base, target }, } = this.parse(Sync); | ||
| this.log('### SYNC REGION ###'); | ||
| const baseRefTablePath = path_1.join(base, 'ref-table.json'); | ||
@@ -30,3 +39,3 @@ const baseRegionFolder = path_1.join(base, 'region'); | ||
| const toDelete = differenceBy_1.differenceBy(targetRef, baseRef, 'file'); | ||
| await delete_files_1.deleteFiles(targetRegionFolder, toDelete); | ||
| await delete_files_1.deleteFiles(targetRegionFolder, toDelete.map((ref) => ref.file)); | ||
| // replace region from from-world to to-world | ||
@@ -51,2 +60,36 @@ const toReplace = differenceBy_1.differenceBy(baseRef, targetRef, 'hash'); | ||
| } | ||
| /** | ||
| * Flush playerdata, stats and advancements folders | ||
| */ | ||
| async flush() { | ||
| const { args: { target }, } = this.parse(Sync); | ||
| this.log('### FLUSH PLAYER FOLDERS ###'); | ||
| const targetFoldersToFlush = ['playerdata', 'stats', 'advancements']; | ||
| await delete_files_1.deleteFiles(target, targetFoldersToFlush); | ||
| await Promise.all(targetFoldersToFlush.map((targetFolder) => promises_1.mkdir(path_1.join(target, targetFolder)).catch(() => this.error(`failed to re-create ${targetFolder}`)))); | ||
| } | ||
| /** | ||
| * Delete and pull POI files from base datas | ||
| */ | ||
| async rewritePOI() { | ||
| const { args: { target, base }, } = this.parse(Sync); | ||
| this.log('### DELETE POI FILES ###'); | ||
| const poiTargetFolder = path_1.join(target, 'poi'); | ||
| const poiBaseFolder = path_1.join(base, 'poi'); | ||
| this.log('deleting POI folder...'); | ||
| await promises_1.rm(poiTargetFolder, { recursive: true }); | ||
| this.log('recreating POI folder...'); | ||
| await promises_1.mkdir(poiTargetFolder); | ||
| this.log('pull POI files from base to target'); | ||
| const files = await promises_1.readdir(poiBaseFolder); | ||
| const progress = cli_ux_1.cli.progress({ | ||
| format: `copying to target -> [{bar}] {percentage}% | ETA: {eta}s | {value}/{total} (${poiTargetFolder})`, | ||
| }); | ||
| progress.start(files.length); | ||
| for (let i = 0; i < files.length; i++) { | ||
| await promises_1.copyFile(path_1.join(poiBaseFolder, files[i]), path_1.join(poiTargetFolder, files[i])); | ||
| progress.update(i + 1); | ||
| } | ||
| progress.stop(); | ||
| } | ||
| async checkAccess(file) { | ||
@@ -53,0 +96,0 @@ try { |
@@ -1,2 +0,1 @@ | ||
| import { RefTable } from '../interfaces/RefTable'; | ||
| export declare function deleteFiles(folder: string, ref: RefTable): Promise<number>; | ||
| export declare function deleteFiles(folder: string, files: string[]): Promise<number>; |
@@ -8,14 +8,14 @@ "use strict"; | ||
| const cli_ux_1 = require("cli-ux"); | ||
| async function deleteFiles(folder, ref) { | ||
| async function deleteFiles(folder, files) { | ||
| const progress = cli_ux_1.cli.progress({ | ||
| format: 'deleting in target -> [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}', | ||
| format: `deleting in target -> [{bar}] {percentage}% | ETA: {eta}s | {value}/{total} (${folder})`, | ||
| }); | ||
| progress.start(ref.length); | ||
| for (let i = 0; i < ref.length; i++) { | ||
| await promises_1.rm(path_1.join(folder, ref[i].file)); | ||
| progress.start(files.length); | ||
| for (let i = 0; i < files.length; i++) { | ||
| await promises_1.rm(path_1.join(folder, files[i]), { recursive: true }); | ||
| progress.update(i + 1); | ||
| } | ||
| progress.stop(); | ||
| return ref.length; | ||
| return files.length; | ||
| } | ||
| exports.deleteFiles = deleteFiles; |
@@ -1,1 +0,1 @@ | ||
| {"version":"0.0.2","commands":{"gen":{"id":"gen","description":"generate hash for the reference map","pluginName":"map-region-sync","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false}},"args":[{"name":"path","description":"path to the reference world","required":true}]},"sync":{"id":"sync","description":"sync region from a given world to another given world","pluginName":"map-region-sync","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false}},"args":[{"name":"base","description":"sync base","required":true},{"name":"target","description":"sync target","required":true}]}}} | ||
| {"version":"0.1.0","commands":{"gen":{"id":"gen","description":"generate hash for the reference map","pluginName":"map-region-sync","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false}},"args":[{"name":"path","description":"path to the reference world","required":true}]},"sync":{"id":"sync","description":"sync region from a given world to another given world","pluginName":"map-region-sync","pluginType":"core","aliases":[],"flags":{"help":{"name":"help","type":"boolean","char":"h","description":"show CLI help","allowNo":false}},"args":[{"name":"base","description":"sync base","required":true},{"name":"target","description":"sync target","required":true}]}}} |
+1
-1
| { | ||
| "name": "map-region-sync", | ||
| "description": "map region sync", | ||
| "version": "0.0.2", | ||
| "version": "0.1.0", | ||
| "author": "Xavier Stouder @Xstoudi", | ||
@@ -6,0 +6,0 @@ "bin": { |
+3
-3
@@ -22,3 +22,3 @@ map-region-sync | ||
| $ mrs (-v|--version|version) | ||
| map-region-sync/0.0.2 win32-x64 node-v15.12.0 | ||
| map-region-sync/0.1.0 win32-x64 node-v15.12.0 | ||
| $ mrs --help [COMMAND] | ||
@@ -51,3 +51,3 @@ USAGE | ||
| _See code: [src/commands/gen.ts](https://github.com/Xstoudi/map-region-sync/blob/v0.0.2/src/commands/gen.ts)_ | ||
| _See code: [src/commands/gen.ts](https://github.com/Xstoudi/map-region-sync/blob/v0.1.0/src/commands/gen.ts)_ | ||
@@ -87,3 +87,3 @@ ## `mrs help [COMMAND]` | ||
| _See code: [src/commands/sync.ts](https://github.com/Xstoudi/map-region-sync/blob/v0.0.2/src/commands/sync.ts)_ | ||
| _See code: [src/commands/sync.ts](https://github.com/Xstoudi/map-region-sync/blob/v0.1.0/src/commands/sync.ts)_ | ||
| <!-- commandsstop --> |
14722
17.82%265
25.59%