diff --git a/src/merge.js b/src/tools/merge-point-files.js similarity index 100% rename from src/merge.js rename to src/tools/merge-point-files.js diff --git a/src/tools/merge-point-users.js b/src/tools/merge-point-users.js new file mode 100644 index 0000000..97397ad --- /dev/null +++ b/src/tools/merge-point-users.js @@ -0,0 +1,35 @@ +const path = require('path'); +const args = require('yargs').argv; +const fs = require('fs').promises; + +async function init() { + await fs.copyFile(args.file, `${path.basename(args.file, path.extname(args.file))}_backup_${Date.now()}.json`); + + const filepath = path.join(process.cwd(), args.file); + const points = require(filepath); // eslint-disable-line + + Object.entries(points).forEach(([game, scores]) => { + const originKey = Object.keys(scores).find((userKey) => userKey.includes(`:${args.origin}`)); + const originScore = scores[originKey]; + + const targetKey = Object.keys(scores).find((userKey) => userKey.includes(`:${args.target}`)); + const targetScore = scores[targetKey]; + + if (typeof originScore === 'undefined' || typeof targetScore === 'undefined') { + return; + } + + const totalScore = targetScore + originScore; + + points[game][targetKey] = targetScore + originScore; + delete points[game][originKey]; + + console.log(`${game} ${targetScore} (${args.target}) + ${originScore} (${args.origin}) = ${totalScore}`); + }); + + await fs.writeFile(filepath, JSON.stringify(points, null, 4)); + + console.log(`Saved ${filepath}`); +} + +init();