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
JavaScript
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