12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 'use strict';
-
- var os = require('os');
- 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 '';
- }
- }
-
- if (typeof os.homedir === 'undefined') {
- module.exports = homedir;
- } else {
- module.exports = os.homedir;
- }
|