trim-source.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import path from 'node:path';
  2. import fsp from 'node:fs/promises';
  3. import { fdir as Fdir } from 'fdir';
  4. import { readFileByLine } from './lib/fetch-text-by-line';
  5. import { SOURCE_DIR } from './constants/dir';
  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. return !(extname === '.js' || extname === '.ts');
  21. })
  22. .crawl(SOURCE_DIR)
  23. .withPromise();
  24. for (let i = 0, len = paths.length; i < len; i++) {
  25. const fullPath = paths[i];
  26. promises.push(trimFileLines(fullPath));
  27. }
  28. return Promise.all(promises);
  29. })();
  30. async function trimFileLines(file: string) {
  31. let result = '';
  32. for await (const line of readFileByLine(file)) {
  33. result += line.trim() + '\n';
  34. }
  35. return fsp.writeFile(file, result);
  36. }