All files / src/utils userHomeDir.js

100% Statements 11/11
100% Branches 8/8
100% Functions 4/4
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64              28x             28x 27x   1x               4x                 30x               28x             28x             28x 1x   27x        
import path from 'path';
import { homedir } from 'os';
 
/**
 * Path to the home directory.
 * @type {string}
 */
const home = homedir();
 
/**
 * Retrieves the user ID (UID) of the current process.
 * @returns {number | null} The UID of the current process if available, otherwise null.
 */
function getUid() {
  if (process.platform !== 'win32' && process.getuid) {
    return process.getuid();
  }
  return null;
}
 
/**
 * Checks if the current environment is a fake root environment.
 * @returns {boolean} True if the environment is a fake root, false otherwise.
 */
function isFakeRoot() {
  return Boolean(process.env.FAKEROOTKEY);
}
 
/**
 * Checks if a given user ID belongs to the root user.
 * @param {number | null} uid - The user ID to check.
 * @returns {boolean} True if the user ID belongs to the root user, false otherwise.
 */
function isRootUser(uid) {
  return uid === 0;
}
 
/**
 * Checks if the current operating system is Windows.
 * @returns {boolean} True if the operating system is Windows, false otherwise.
 */
function isWindows() {
  return process.platform === 'win32';
}
 
/**
 * Indicates whether the current environment is running as the root user.
 * @type {boolean}
 */
const ROOT_USER = isRootUser(getUid()) && !isFakeRoot();
 
/**
 * User's home directory path.
 * @type {any}
 */
let userHomeDir;
if (isWindows()) {
  userHomeDir = path.resolve(home, './AppData/Local');
} else {
  userHomeDir = path.resolve(home, './.local/share');
}
 
export { userHomeDir, home, isFakeRoot, isRootUser, ROOT_USER };