123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
- var fs = require('fs');
- var parse = require('parse-passwd');
- function homedir() {
-
-
-
- if (process.platform === 'win32') {
-
- if (process.env.USERPROFILE) {
- return process.env.USERPROFILE;
- }
-
- if (process.env.HOMEDRIVE && process.env.HOMEPATH) {
- return process.env.HOMEDRIVE + process.env.HOMEPATH;
- }
-
- if (process.env.HOME) {
- return process.env.HOME;
- }
- return null;
- }
-
- if (process.env.HOME) {
- return process.env.HOME;
- }
-
- var passwd = tryReadFileSync('/etc/passwd');
- var home = find(parse(passwd), getuid());
- if (home) {
- return home;
- }
-
- var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;
- if (!user) {
- return null;
- }
- if (process.platform === 'darwin') {
- return '/Users/' + user;
- }
- return '/home/' + user;
- }
- function find(arr, uid) {
- var len = arr.length;
- for (var i = 0; i < len; i++) {
- if (+arr[i].uid === uid) {
- return arr[i].homedir;
- }
- }
- }
- function getuid() {
- if (typeof process.geteuid === 'function') {
- return process.geteuid();
- }
- return process.getuid();
- }
- function tryReadFileSync(fp) {
- try {
- return fs.readFileSync(fp, 'utf8');
- } catch (err) {
- return '';
- }
- }
- module.exports = homedir;
|