string-array-compare.js 903 B

1234567891011121314151617181920212223242526272829303132333435
  1. const { promises: fsPromises } = require('fs');
  2. async function compareAndWriteFile(linesA, filePath) {
  3. const linesB = (await fsPromises.readFile(filePath, { encoding: 'utf-8' })).split('\n');
  4. if (!stringArrayCompare(linesA, linesB)) {
  5. await fsPromises.writeFile(
  6. filePath,
  7. linesA.join('\n'),
  8. { encoding: 'utf-8' }
  9. )
  10. } else {
  11. console.log(`Same Content, bail out writing: ${filePath}`);
  12. }
  13. }
  14. function stringArrayCompare (linesA, linesB) {
  15. if (linesA.length !== linesB.length) return false;
  16. for (let i = 0; i < linesA.length; i++) {
  17. const lineA = linesA[i];
  18. const lineB = linesB[i];
  19. if (lineA.startsWith('#') && lineB.startsWith('#')) {
  20. continue;
  21. }
  22. if (lineA !== lineB) {
  23. return false;
  24. }
  25. }
  26. return true;
  27. }
  28. module.exports.stringArrayCompare = stringArrayCompare;
  29. module.exports.compareAndWriteFile = compareAndWriteFile;