You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.1 KiB
65 lines
1.1 KiB
/*! |
|
* is-directory <https://github.com/jonschlinkert/is-directory> |
|
* |
|
* Copyright (c) 2014-2015, Jon Schlinkert. |
|
* Licensed under the MIT License. |
|
*/ |
|
|
|
'use strict'; |
|
|
|
var fs = require('fs'); |
|
|
|
/** |
|
* async |
|
*/ |
|
|
|
function isDirectory(filepath, cb) { |
|
if (typeof cb !== 'function') { |
|
throw new Error('expected a callback function'); |
|
} |
|
|
|
if (typeof filepath !== 'string') { |
|
cb(new Error('expected filepath to be a string')); |
|
return; |
|
} |
|
|
|
fs.stat(filepath, function(err, stats) { |
|
if (err) { |
|
if (err.code === 'ENOENT') { |
|
cb(null, false); |
|
return; |
|
} |
|
cb(err); |
|
return; |
|
} |
|
cb(null, stats.isDirectory()); |
|
}); |
|
} |
|
|
|
/** |
|
* sync |
|
*/ |
|
|
|
isDirectory.sync = function isDirectorySync(filepath) { |
|
if (typeof filepath !== 'string') { |
|
throw new Error('expected filepath to be a string'); |
|
} |
|
|
|
try { |
|
var stat = fs.statSync(filepath); |
|
return stat.isDirectory(); |
|
} catch (err) { |
|
if (err.code === 'ENOENT') { |
|
return false; |
|
} else { |
|
throw err; |
|
} |
|
} |
|
return false; |
|
}; |
|
|
|
/** |
|
* Expose `isDirectory` |
|
*/ |
|
|
|
module.exports = isDirectory;
|
|
|