|
@@ -1,7 +1,43 @@
|
|
|
+const fs = require('fs-extra');
|
|
|
+const path = require('path');
|
|
|
+
|
|
|
+function sleep(ms) {
|
|
|
+ return new Promise(resolve => setTimeout(resolve, ms));
|
|
|
+}
|
|
|
+
|
|
|
function versionText(config) {
|
|
|
return `${config.name} v${config.version}, Node.js ${process.version}`;
|
|
|
}
|
|
|
|
|
|
+async function findFiles(callback, dir, recursive = true) {
|
|
|
+ if (!(callback && dir))
|
|
|
+ return;
|
|
|
+
|
|
|
+ const files = await fs.readdir(dir, { withFileTypes: true });
|
|
|
+
|
|
|
+ for (const file of files) {
|
|
|
+ const found = path.resolve(dir, file.name);
|
|
|
+ if (file.isDirectory()) {
|
|
|
+ if (recursive)
|
|
|
+ await findFiles(callback, found);
|
|
|
+ } else {
|
|
|
+ await callback(found);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function touchFile(filename) {
|
|
|
+ await fs.utimes(filename, Date.now()/1000, Date.now()/1000);
|
|
|
+}
|
|
|
+
|
|
|
+function hasProp(obj, prop) {
|
|
|
+ return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
|
+}
|
|
|
+
|
|
|
module.exports = {
|
|
|
+ sleep,
|
|
|
versionText,
|
|
|
+ findFiles,
|
|
|
+ touchFile,
|
|
|
+ hasProp,
|
|
|
};
|