mirror of
https://github.com/samsonjs/batteries.git
synced 2026-04-05 10:55:49 +00:00
[NEW] FileExt: exists, isFile, isDirectory, etc.
This commit is contained in:
parent
2793046b7f
commit
9f2533e22f
1 changed files with 34 additions and 1 deletions
|
|
@ -1,7 +1,9 @@
|
|||
var fs = require('fs')
|
||||
var constants = require('constants')
|
||||
, fs = require('fs')
|
||||
, ArrayExt = require('./array-ext').ArrayExt
|
||||
, LineEmitter = require('./line-emitter').LineEmitter
|
||||
, ext = require('./ext')
|
||||
, ENOENT = constants.ENOENT
|
||||
;
|
||||
|
||||
exports.extend = function(obj) {
|
||||
|
|
@ -24,6 +26,16 @@ var FileExt = exports.FileExt = {
|
|||
le.on('end', function() { options.end(); });
|
||||
}
|
||||
|
||||
, exists: function(f) {
|
||||
try {
|
||||
fs.statSync(f)
|
||||
return true
|
||||
} catch (e) {
|
||||
if (e.errno === ENOENT) return false
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
||||
, grep: function(regex, f, callback) {
|
||||
if (!callback) throw new Error('grep requires a callback');
|
||||
var results = [];
|
||||
|
|
@ -34,6 +46,11 @@ var FileExt = exports.FileExt = {
|
|||
}
|
||||
|
||||
, home: function(user, callback) {
|
||||
// user is optional so the first param may be a callback
|
||||
if (typeof user === 'function') {
|
||||
callback = user;
|
||||
user = null;
|
||||
}
|
||||
if (user && callback && user !== process.env['USER']) {
|
||||
FileExt.grep(new RegExp('^' + user + ':'), '/etc/passwd', function(line) {
|
||||
callback(line && line.split(':')[4]);
|
||||
|
|
@ -55,3 +72,19 @@ var FileExt = exports.FileExt = {
|
|||
}
|
||||
|
||||
};
|
||||
|
||||
// isDirectory, isFile, isSymbolicLink, etc.
|
||||
var s = fs.statSync(__dirname);
|
||||
Object.keys(Object.getPrototypeOf(s)).forEach(function(k) {
|
||||
if (k.match(/^is/) && typeof s[k] === 'function') {
|
||||
FileExt[k] = function(f, cb) {
|
||||
if (cb) {
|
||||
fs.stat(f, function(err, stat) {
|
||||
cb(err, err ? null : stat[k]());
|
||||
});
|
||||
} else {
|
||||
return fs.statSync(f)[k]();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue