mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2025-09-09 16:17:22 +00:00
push all website files
This commit is contained in:
74
website/functions/node_modules/@mrmlnc/readdir-enhanced/lib/stat.js
generated
vendored
Normal file
74
website/functions/node_modules/@mrmlnc/readdir-enhanced/lib/stat.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
'use strict';
|
||||
|
||||
const call = require('./call');
|
||||
|
||||
module.exports = stat;
|
||||
|
||||
/**
|
||||
* Retrieves the {@link fs.Stats} for the given path. If the path is a symbolic link,
|
||||
* then the Stats of the symlink's target are returned instead. If the symlink is broken,
|
||||
* then the Stats of the symlink itself are returned.
|
||||
*
|
||||
* @param {object} fs - Synchronous or Asynchronouse facade for the "fs" module
|
||||
* @param {string} path - The path to return stats for
|
||||
* @param {function} callback
|
||||
*/
|
||||
function stat (fs, path, callback) {
|
||||
let isSymLink = false;
|
||||
|
||||
call.safe(fs.lstat, path, (err, lstats) => {
|
||||
if (err) {
|
||||
// fs.lstat threw an eror
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
try {
|
||||
isSymLink = lstats.isSymbolicLink();
|
||||
}
|
||||
catch (err2) {
|
||||
// lstats.isSymbolicLink() threw an error
|
||||
// (probably because fs.lstat returned an invalid result)
|
||||
return callback(err2);
|
||||
}
|
||||
|
||||
if (isSymLink) {
|
||||
// Try to resolve the symlink
|
||||
symlinkStat(fs, path, lstats, callback);
|
||||
}
|
||||
else {
|
||||
// It's not a symlink, so return the stats as-is
|
||||
callback(null, lstats);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the {@link fs.Stats} for the target of the given symlink.
|
||||
* If the symlink is broken, then the Stats of the symlink itself are returned.
|
||||
*
|
||||
* @param {object} fs - Synchronous or Asynchronouse facade for the "fs" module
|
||||
* @param {string} path - The path of the symlink to return stats for
|
||||
* @param {object} lstats - The stats of the symlink
|
||||
* @param {function} callback
|
||||
*/
|
||||
function symlinkStat (fs, path, lstats, callback) {
|
||||
call.safe(fs.stat, path, (err, stats) => {
|
||||
if (err) {
|
||||
// The symlink is broken, so return the stats for the link itself
|
||||
return callback(null, lstats);
|
||||
}
|
||||
|
||||
try {
|
||||
// Return the stats for the resolved symlink target,
|
||||
// and override the `isSymbolicLink` method to indicate that it's a symlink
|
||||
stats.isSymbolicLink = () => true;
|
||||
}
|
||||
catch (err2) {
|
||||
// Setting stats.isSymbolicLink threw an error
|
||||
// (probably because fs.stat returned an invalid result)
|
||||
return callback(err2);
|
||||
}
|
||||
|
||||
callback(null, stats);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user