Files
atom/script/lib/handle-tilde.js
Wliu adc2bd0a35 👕
2017-05-11 12:09:38 -04:00

25 lines
681 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}`
}