const fs = require('fs').promises
// Returns a Promise<number> that computes the most recent
// modification time for any file inside a directory
const modifiedTime = path =>
fs.stat(path).then(stats => {
// mtimeMs is the modification time for this file/directory
const {mtimeMs} = stats
if (stats.isDirectory()) {
// If this is a directory, compute the modification time
// for all files/subdirectories inside it
return fs.readdir(path)
.then(files =>
// Compute modification times of all contained files
Promise.all(files.map(file =>
modifiedTime(path + '/' + file)
))
)
// modifiedTimes will be an array containing the latest
// modification time of each file in the directory
.then(modifiedTimes =>
Promise.resolve(Math.max(mtimeMs, ...modifiedTimes))
)
}
// If this is a file, just return its modification time
else return Promise.resolve(mtimeMs)
})
modifiedTime('.').then(mTime => {
console.log(`Most recent modification: ${new Date(mTime)}`)
})
-
Caleb C. Sander authoredecfb12b9