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.
32 lines (31 loc) • 1.4 kB
JavaScript
import moment from 'moment';
import Package from '../../globals/package.js';
import Header from './logiqx/header.js';
/**
* Igir-generated {@link Header}.
*/
export default class IgirHeader extends Header {
constructor(datType, originalDat, options) {
const inputOptions = Object.entries(options.toObject()).filter(([key, value]) => (['merge-', 'exclude-', 'filter-', 'no-', 'only-', 'single', 'prefer-'].some((start) => key.startsWith(start)) ||
['input', 'input-exclude', 'dat'].includes(key)) &&
value !== undefined &&
value !== false &&
value !== '' &&
(!Array.isArray(value) || value.length > 0));
const inputOptionsString = JSON.stringify(Object.fromEntries(inputOptions), undefined, 2);
const date = moment().format('YYYYMMDD-HHmmss');
super({
name: `${originalDat.getHeader().getName().trim()} ${datType}`.trim(),
description: `${originalDat.getHeader().getDescription()?.trim()} ${datType}`.trim(),
version: date,
date,
author: Package.NAME,
url: Package.HOMEPAGE,
comment: [
`${datType} generated by ${Package.NAME} v${Package.VERSION}`,
`Options: ${inputOptionsString}`,
`Filtered DAT: ${originalDat.toString()}`,
].join('\n'),
});
}
}