utils.js 985 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const fs = require('fs-extra');
  2. const path = require('path');
  3. function sleep(ms) {
  4. return new Promise(resolve => setTimeout(resolve, ms));
  5. }
  6. function versionText(config) {
  7. return `${config.name} v${config.version}, Node.js ${process.version}`;
  8. }
  9. async function findFiles(callback, dir, recursive = true) {
  10. if (!(callback && dir))
  11. return;
  12. const files = await fs.readdir(dir, { withFileTypes: true });
  13. for (const file of files) {
  14. const found = path.resolve(dir, file.name);
  15. if (file.isDirectory()) {
  16. if (recursive)
  17. await findFiles(callback, found);
  18. } else {
  19. await callback(found);
  20. }
  21. }
  22. }
  23. async function touchFile(filename) {
  24. await fs.utimes(filename, Date.now()/1000, Date.now()/1000);
  25. }
  26. function hasProp(obj, prop) {
  27. return Object.prototype.hasOwnProperty.call(obj, prop);
  28. }
  29. module.exports = {
  30. sleep,
  31. versionText,
  32. findFiles,
  33. touchFile,
  34. hasProp,
  35. };