travel/admin/node_modules/find-parent-dir/index.js

46 lines
1.0 KiB
JavaScript

'use strict';
var path = require('path')
, fs = require('fs')
, exists = fs.exists || path.exists
, existsSync = fs.existsSync || path.existsSync
;
function splitPath(path) {
var parts = path.split(/(\/|\\)/);
if (!parts.length) return parts;
// when path starts with a slash, the first part is empty string
return !parts[0].length ? parts.slice(1) : parts;
}
exports = module.exports = function (currentFullPath, clue, cb) {
function testDir(parts) {
if (parts.length === 0) return cb(null, null);
var p = parts.join('');
exists(path.join(p, clue), function (itdoes) {
if (itdoes) return cb(null, p);
testDir(parts.slice(0, -1));
});
}
testDir(splitPath(currentFullPath));
}
exports.sync = function (currentFullPath, clue) {
function testDir(parts) {
if (parts.length === 0) return null;
var p = parts.join('');
var itdoes = existsSync(path.join(p, clue));
return itdoes ? p : testDir(parts.slice(0, -1));
}
return testDir(splitPath(currentFullPath));
}