-
Notifications
You must be signed in to change notification settings - Fork 0
/
confdir.js
34 lines (30 loc) · 939 Bytes
/
confdir.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// confDir
;(function() {
var fs = require('fs');
var path = require('path');
exports = module.exports = function getConfDir(dir, mod, callback) {
if (typeof mod != 'string' || /\//.test(mod)) {
callback(new Error("Illegal argument 'modname'."));
return;
}
var dirmod = '.' + mod;
var lastResult = '';
// find dirname by recursively walking up the path hierarchy
function findDirRec(dir, callback) {
var result = path.resolve(dir, dirmod);
fs.stat(result, function stat(err, stat) {
if (err || !stat.isDirectory()) {
if (lastResult == result) {
callback(new Error('No configuration directory found.'));
return;
}
lastResult = result;
findDirRec(path.resolve(dir, '..'), callback);
} else {
callback(null, result);
}
});
}
findDirRec(dir, callback);
};
}).call(this);