UNPKG

@yeoman/conflicter

Version:

Conflict resolution for yeoman's generator/environment stack

34 lines 1.54 kB
import fs from 'node:fs'; import path from 'node:path'; import { Buffer } from 'node:buffer'; import Table from 'cli-table'; import dateFormat from 'dateformat'; import prettyBytes from 'pretty-bytes'; import { isBinaryFileSync } from 'isbinaryfile'; import textextensions from 'textextensions'; import binaryExtensions from 'binary-extensions'; const isBinary = (filePath, newFileContents) => { const extension = path.extname(filePath).replace(/^\./, '') || path.basename(filePath); if (binaryExtensions.includes(extension)) { return true; } if (textextensions.includes(extension)) { return false; } return Boolean((fs.existsSync(filePath) && isBinaryFileSync(filePath)) || (newFileContents && isBinaryFileSync(Buffer.isBuffer(newFileContents) ? newFileContents : Buffer.from(newFileContents)))); }; const binaryDiff = (existingFilePath, newFileContents) => { const existingStat = fs.statSync(existingFilePath); const table = new Table({ head: ['', 'Existing', 'Replacement', 'Diff'], }); let sizeDiff; newFileContents ||= Buffer.from([]); sizeDiff = existingStat.size > newFileContents.length ? '-' : '+'; sizeDiff += prettyBytes(Math.abs(existingStat.size - newFileContents.length)); table.push(['Size', prettyBytes(existingStat.size), prettyBytes(newFileContents.length), sizeDiff], ['Last modified', dateFormat(existingStat.mtime), '', '']); return table.toString(); }; export { isBinary, binaryDiff }; //# sourceMappingURL=binary-diff.js.map