blob: 84a9639796cd07b11b8a56c25f8d0b9c913f7357 [file] [log] [blame]
var pathPlatform = require('path-platform');
module.exports = function (cwd, opts) {
if (cwd === undefined) cwd = process.cwd();
if (!opts) opts = {};
var platform = opts.platform || process.platform;
var isWindows = /^win/.test(platform);
var path = isWindows ? pathPlatform.win32 : pathPlatform;
var normalize = !isWindows ? path.normalize :
path.normalize('c:') === 'c:.' ? fixNormalize(path.normalize) :
path.normalize;
var sep = isWindows ? /[\\\/]/ : '/';
var init = isWindows ? '' : '/';
var join = function (x, y) {
var ps = [ x, y ].filter(function (p) {
return p && typeof p === 'string'
});
return normalize(ps.join(isWindows ? '\\' : '/'));
};
var res = normalize(cwd)
.split(sep)
.reduce(function (acc,dir,ix) {
return acc.concat(join(acc[ix], dir))
}, [init])
.slice(1)
.reverse()
;
if (res[0] === res[1]) return [ res[0] ];
if (isWindows && /^\\/.test(cwd)) {
return res.slice(0,-1).map(function (d) {
var ch = d.charAt(0)
return ch === '\\' ? d :
ch === '.' ? '\\' + d.slice(1) :
'\\' + d
});
}
return res;
function fixNormalize(fn) {
return function(p) {
return fn(p).replace(/:\.$/, ':')
}
}
}