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.

30 lines (29 loc) • 1.42 kB
import { ProgressBarSymbol } from '../../console/progressBar.js'; import { ChecksumBitmask } from '../../types/files/fileChecksums.js'; import Scanner from '../scanner.js'; /** * Scan the {@link OptionsProps.input} input directory for ROM files and return the internal model * representation. */ export default class ROMScanner extends Scanner { constructor(options, progressBar, fileFactory, driveSemaphore) { super(options, progressBar, fileFactory, driveSemaphore, ROMScanner.name); } /** * Scan for ROM files. */ async scan(checksumBitmask = ChecksumBitmask.CRC32, checksumArchives = false) { this.progressBar.logTrace('scanning ROM files'); this.progressBar.setSymbol(ProgressBarSymbol.FILE_SCANNING); this.progressBar.resetProgress(0); const romFilePaths = await this.options.scanInputFilesWithoutExclusions((increment) => { this.progressBar.incrementTotal(increment); }); this.progressBar.logTrace(`found ${romFilePaths.length.toLocaleString()} ROM file${romFilePaths.length === 1 ? '' : 's'}`); this.progressBar.setSymbol(ProgressBarSymbol.ROM_HASHING); this.progressBar.resetProgress(romFilePaths.length); const files = await this.getFilesFromPaths(romFilePaths, checksumBitmask, checksumArchives); this.progressBar.logTrace('done scanning ROM files'); return files; } }