Listener.prototype.node_watch_path = function (_path) { const self = this; /*eslint-disable no-sync */ const stats = fs.lstatSync(_path); /*eslint-enable no-sync */ if (stats.isSymbolicLink()) { return log.error("Skipping adding %s because it is a symlink.", _path); } self.watchers[_path] = fs.watch(_path, self.listener.bind(self, _path)); /*eslint-disable no-sync */ const paths = fs.readdirSync(_path); /*eslint-enable no-sync */ _.each(paths, function (p) { const p_path = path.join(_path, p); /*eslint-disable no-sync */ const p_stats = fs.lstatSync(p_path); /*eslint-enable no-sync */ if (p_stats.isDirectory()) { self.watch_path(p_path); } // TODO: if file, run all the hooks }); };
op.stat = function(file, code) { var EXISTS = 0; var FILESIZE = 1; var ISDIR = 2; var ISREG = 3; var ISDEV = 4; var CREATETIME = 5; var ACCESSTIME = 6; var MODIFYTIME = 7; var CHANGETIME = 8; var BACKUPTIME = 9; var UID = 10; var GID = 11; var ISLNK = 12; var PLATFORM_DEV = -1; var PLATFORM_INODE = -2; var PLATFORM_MODE = -3; var PLATFORM_NLINKS = -4; var PLATFORM_DEVTYPE = -5; var PLATFORM_BLOCKSIZE = -6; var PLATFORM_BLOCKS = -7; // we can't use fs.existsSync(file) as it follows symlinks try { var stats = fs.lstatSync(file); } catch (err) { if (code == EXISTS && err.code === 'ENOENT') { return 0; } else { throw err; } } switch (code) { case EXISTS: return 1; case FILESIZE: return stats.size; case ISDIR: return boolish(stats.isDirectory()); case ISREG: return boolish(stats.isFile()); case ISDEV: return boolish(stats.isCharacterDevice() || stats.isBlockDevice()); case CREATETIME: return -1; case ACCESSTIME: return stats.atime.getTime() / 1000; case MODIFYTIME: return stats.mtime.getTime() / 1000; case CHANGETIME: return stats.ctime.getTime() / 1000; case BACKUPTIME: return -1; case UID: return stats.uid; case GID: return stats.gid; case ISLNK: return boolish(stats.isSymbolicLink()); case PLATFORM_DEV: return stats.dev; case PLATFORM_INODE: return stats.ino; case PLATFORM_MODE: return stats.mode; case PLATFORM_NLINKS: return stats.nlink; case PLATFORM_DEVTYPE: return stats.rdev; case PLATFORM_BLOCKSIZE: return stats.blksize; case PLATFORM_BLOCKS: return stats.blocks; } };
_.each(paths, function (p) { var stats, p_path = path.join(self.path, p); /*eslint-disable no-sync */ stats = fs.lstatSync(p_path); /*eslint-enable no-sync */ if (stats.isDirectory()) { self.children[p_path] = new Hook(p_path, self); } });
_.each(paths, function (p) { const p_path = path.join(_path, p); /*eslint-disable no-sync */ const p_stats = fs.lstatSync(p_path); /*eslint-enable no-sync */ if (p_stats.isDirectory()) { self.watch_path(p_path); } // TODO: if file, run all the hooks });
_.each(paths, function (p) { var stats, p_path = path.join(_path, p); /*eslint-disable no-sync */ stats = fs.lstatSync(p_path); /*eslint-enable no-sync */ if (stats.isDirectory()) { return self.run_hooks(p_path); } if (stats.isFile()) { return self.handle_hook(p_path); } });
op.fileislink = function(file) { return boolish(fs.lstatSync(file).isSymbolicLink()); };