41 lines
853 B
JavaScript
Raw Normal View History

'use strict';
var os = require('os');
var path = require('path');
function replaceHomedir(filepath, replacement) {
if (typeof filepath !== 'string') {
throw new Error('Path for replace-homedir must be a string.');
}
if (!path.isAbsolute(filepath)) {
return filepath;
}
var home = os.homedir();
if (!path.isAbsolute(home)) {
return filepath;
}
var lookupHome = path.normalize(home + path.sep);
var lookupPath = path.normalize(filepath + path.sep);
if (lookupPath.indexOf(lookupHome) !== 0) {
return filepath;
}
var output = filepath.replace(lookupHome, function () {
var result = replacement;
if (typeof replacement === 'function') {
result = replacement.apply(this, arguments);
}
return result + path.sep;
});
return path.normalize(output);
}
module.exports = replaceHomedir;