85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
var fs = require("fs"),
|
|
pth = require("path");
|
|
|
|
fs.existsSync = fs.existsSync || pth.existsSync;
|
|
|
|
module.exports = function(/*String*/path) {
|
|
|
|
var _path = path || "",
|
|
_permissions = 0,
|
|
_obj = newAttr(),
|
|
_stat = null;
|
|
|
|
function newAttr() {
|
|
return {
|
|
directory : false,
|
|
readonly : false,
|
|
hidden : false,
|
|
executable : false,
|
|
mtime : 0,
|
|
atime : 0
|
|
}
|
|
}
|
|
|
|
if (_path && fs.existsSync(_path)) {
|
|
_stat = fs.statSync(_path);
|
|
_obj.directory = _stat.isDirectory();
|
|
_obj.mtime = _stat.mtime;
|
|
_obj.atime = _stat.atime;
|
|
_obj.executable = !!(1 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0]));
|
|
_obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0]));
|
|
_obj.hidden = pth.basename(_path)[0] === ".";
|
|
} else {
|
|
console.warn("Invalid path: " + _path)
|
|
}
|
|
|
|
return {
|
|
|
|
get directory () {
|
|
return _obj.directory;
|
|
},
|
|
|
|
get readOnly () {
|
|
return _obj.readonly;
|
|
},
|
|
|
|
get hidden () {
|
|
return _obj.hidden;
|
|
},
|
|
|
|
get mtime () {
|
|
return _obj.mtime;
|
|
},
|
|
|
|
get atime () {
|
|
return _obj.atime;
|
|
},
|
|
|
|
|
|
get executable () {
|
|
return _obj.executable;
|
|
},
|
|
|
|
decodeAttributes : function(val) {
|
|
|
|
},
|
|
|
|
encodeAttributes : function (val) {
|
|
|
|
},
|
|
|
|
toString : function() {
|
|
return '{\n' +
|
|
'\t"path" : "' + _path + ",\n" +
|
|
'\t"isDirectory" : ' + _obj.directory + ",\n" +
|
|
'\t"isReadOnly" : ' + _obj.readonly + ",\n" +
|
|
'\t"isHidden" : ' + _obj.hidden + ",\n" +
|
|
'\t"isExecutable" : ' + _obj.executable + ",\n" +
|
|
'\t"mTime" : ' + _obj.mtime + "\n" +
|
|
'\t"aTime" : ' + _obj.atime + "\n" +
|
|
'}';
|
|
}
|
|
}
|
|
|
|
};
|