UNPKG

igir

Version:

🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

46 lines (45 loc) • 1.52 kB
import Package from "../../globals/package.js"; import Header from "../../models/dats/logiqx/header.js"; import LogiqxDAT from "../../models/dats/logiqx/logiqxDat.js"; import ArrayUtil from "../../utils/arrayUtil.js"; import DateUtil from "../../utils/dateUtil.js"; import Module from "../module.js"; class DATCombiner extends Module { constructor(progressBar) { super(progressBar, DATCombiner.name); } /** * Combine the DATs. */ combine(dats) { this.prefixedLogger.trace(`combining ${dats.length} DAT${dats.length === 1 ? "" : "s"}`); const games = dats.flatMap((dat) => dat.getGames()).filter(ArrayUtil.filterUniqueMapped((game) => game.hashCode())); const isMame = dats.some((dat) => dat.isMame()); const newDat = new LogiqxDAT({ header: DATCombiner.generateHeader(dats), ...isMame ? { machine: games } : { games } }); this.prefixedLogger.trace(`done combining ${dats.length} DAT${dats.length === 1 ? "" : "s"}`); return newDat; } static generateHeader(dats) { const datName = "igir combined"; const date = DateUtil.format("YYYYMMDD-HHmmss"); return new Header({ name: datName, description: datName, version: date, date, author: Package.NAME, url: Package.HOMEPAGE, comment: [ `Combined DAT generated by ${Package.NAME} v${Package.VERSION}`, ...dats.map((dat) => dat.getName()) ].join("\n") }); } } export { DATCombiner as default }; //# sourceMappingURL=datCombiner.js.map