trim-source.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import path from 'path';
  2. import fsp from 'fs/promises';
  3. import { fdir as Fdir } from 'fdir';
  4. import { readFileByLine } from './lib/fetch-text-by-line';
  5. const sourceDir = path.resolve(import.meta.dir, '../Source');
  6. (async () => {
  7. const promises: Array<Promise<unknown>> = [];
  8. const paths = await new Fdir()
  9. .withFullPaths()
  10. // .exclude((dirName, dirPath) => {
  11. // if (dirName === 'domainset' || dirName === 'ip' || dirName === 'non_ip') {
  12. // return false;
  13. // }
  14. // console.error(picocolors.red(`[build-comman] Unknown dir: ${dirPath}`));
  15. // return true;
  16. // })
  17. .filter((filepath, isDirectory) => {
  18. if (isDirectory) return true;
  19. const extname = path.extname(filepath);
  20. if (extname === '.js' || extname === '.ts') {
  21. return false;
  22. }
  23. return true;
  24. })
  25. .crawl(sourceDir)
  26. .withPromise();
  27. for (let i = 0, len = paths.length; i < len; i++) {
  28. const fullPath = paths[i];
  29. promises.push(trimFileLines(fullPath));
  30. }
  31. return Promise.all(promises);
  32. })();
  33. async function trimFileLines(file: string) {
  34. let result = '';
  35. for await (const line of readFileByLine(file)) {
  36. result += line.trim() + '\n';
  37. }
  38. return fsp.writeFile(file, result);
  39. }