untildify-user
Version:
Untildify a path for the current user even if it is root
38 lines • 3.83 kB
JavaScript
import { homedir } from "os";
import { join } from "path";
import { isSudo } from "admina";
export function userHomeDir() {
if (isSudo() && typeof process.env.SUDO_USER === "string" && process.env.SUDO_USER !== "") {
// use the user profile even if root
if (process.platform === "darwin") {
return join("/Users/", process.env.SUDO_USER);
}
else {
return join("/home/", process.env.SUDO_USER);
}
}
else {
const maybeHomeDir = homedir();
if (maybeHomeDir === "") {
return undefined;
}
return maybeHomeDir;
}
}
const tildeRegex = /^~(?=$|\/|\\)/;
/**
* Replaces a tilde with the user's home directory
*
* @example UntildifyUser("~/foo") // /home/user/foo
*
* @param path The path to untildify
* @returns The untildified path
*/
export function untildifyUser(path) {
const maybeHomeDir = userHomeDir();
if (maybeHomeDir === undefined) {
return path;
}
return path.replace(tildeRegex, maybeHomeDir);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFL0IsTUFBTSxVQUFVLFdBQVc7SUFDekIsSUFBSSxNQUFNLEVBQUUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMxRixvQ0FBb0M7UUFDcEMsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDOUMsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLENBQUE7UUFDOUIsSUFBSSxZQUFZLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTyxTQUFTLENBQUE7UUFDbEIsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFBO0FBRWxDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVk7SUFDeEMsTUFBTSxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFDbEMsSUFBSSxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQTtBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gXCJvc1wiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIlxuaW1wb3J0IHsgaXNTdWRvIH0gZnJvbSBcImFkbWluYVwiXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VySG9tZURpcigpIHtcbiAgaWYgKGlzU3VkbygpICYmIHR5cGVvZiBwcm9jZXNzLmVudi5TVURPX1VTRVIgPT09IFwic3RyaW5nXCIgJiYgcHJvY2Vzcy5lbnYuU1VET19VU0VSICE9PSBcIlwiKSB7XG4gICAgLy8gdXNlIHRoZSB1c2VyIHByb2ZpbGUgZXZlbiBpZiByb290XG4gICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwiZGFyd2luXCIpIHtcbiAgICAgIHJldHVybiBqb2luKFwiL1VzZXJzL1wiLCBwcm9jZXNzLmVudi5TVURPX1VTRVIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBqb2luKFwiL2hvbWUvXCIsIHByb2Nlc3MuZW52LlNVRE9fVVNFUilcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbWF5YmVIb21lRGlyID0gaG9tZWRpcigpXG4gICAgaWYgKG1heWJlSG9tZURpciA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gbWF5YmVIb21lRGlyXG4gIH1cbn1cblxuY29uc3QgdGlsZGVSZWdleCA9IC9efig/PSR8XFwvfFxcXFwpL1xuXG4vKipcbiAqIFJlcGxhY2VzIGEgdGlsZGUgd2l0aCB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5XG4gKlxuICogQGV4YW1wbGUgVW50aWxkaWZ5VXNlcihcIn4vZm9vXCIpIC8vIC9ob21lL3VzZXIvZm9vXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdW50aWxkaWZ5XG4gKiBAcmV0dXJucyBUaGUgdW50aWxkaWZpZWQgcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW50aWxkaWZ5VXNlcihwYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF5YmVIb21lRGlyID0gdXNlckhvbWVEaXIoKVxuICBpZiAobWF5YmVIb21lRGlyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcGF0aFxuICB9XG5cbiAgcmV0dXJuIHBhdGgucmVwbGFjZSh0aWxkZVJlZ2V4LCBtYXliZUhvbWVEaXIpXG59XG4iXX0=