Files
atom/script/lib/handle-tilde.js
2019-05-31 18:33:56 +02:00

30 lines
768 B
JavaScript

'use strict';
const os = require('os');
const passwdUser = require('passwd-user');
const path = require('path');
module.exports = function(aPath) {
if (!aPath.startsWith('~')) {
return aPath;
}
const sepIndex = aPath.indexOf(path.sep);
const user = sepIndex < 0 ? aPath.substring(1) : aPath.substring(1, sepIndex);
const rest = sepIndex < 0 ? '' : aPath.substring(sepIndex);
const home =
user === ''
? os.homedir()
: (() => {
const passwd = passwdUser.sync(user);
if (passwd === undefined) {
throw new Error(
`Failed to expand the tilde in ${aPath} - user "${user}" does not exist`
);
}
return passwd.homedir;
})();
return `${home}${rest}`;
};