summaryrefslogtreecommitdiff
path: root/deps/npm/lib/config/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/config/core.js')
-rw-r--r--deps/npm/lib/config/core.js36
1 files changed, 18 insertions, 18 deletions
diff --git a/deps/npm/lib/config/core.js b/deps/npm/lib/config/core.js
index b9851f98d0..36420b3450 100644
--- a/deps/npm/lib/config/core.js
+++ b/deps/npm/lib/config/core.js
@@ -8,7 +8,7 @@ var path = require('path')
var nopt = require('nopt')
var ini = require('ini')
var Umask = configDefs.Umask
-var mkdirp = require('mkdirp')
+var mkdirp = require('gentle-fs').mkdir
var umask = require('../utils/umask')
var isWindows = require('../utils/is-windows.js')
@@ -31,10 +31,8 @@ enumerable: true })
exports.validate = validate
-var myUid = process.env.SUDO_UID !== undefined
- ? process.env.SUDO_UID : (process.getuid && process.getuid())
-var myGid = process.env.SUDO_GID !== undefined
- ? process.env.SUDO_GID : (process.getgid && process.getgid())
+var myUid = process.getuid && process.getuid()
+var myGid = process.getgid && process.getgid()
var loading = false
var loadCbs = []
@@ -218,7 +216,6 @@ function Conf (base) {
Conf.prototype.loadPrefix = require('./load-prefix.js')
Conf.prototype.loadCAFile = require('./load-cafile.js')
-Conf.prototype.loadUid = require('./load-uid.js')
Conf.prototype.setUser = require('./set-user.js')
Conf.prototype.getCredentialsByURI = require('./get-credentials-by-uri.js')
Conf.prototype.setCredentialsByURI = require('./set-credentials-by-uri.js')
@@ -227,11 +224,8 @@ Conf.prototype.clearCredentialsByURI = require('./clear-credentials-by-uri.js')
Conf.prototype.loadExtras = function (cb) {
this.setUser(function (er) {
if (er) return cb(er)
- this.loadUid(function (er) {
- if (er) return cb(er)
- // Without prefix, nothing will ever work
- mkdirp(this.prefix, cb)
- }.bind(this))
+ // Without prefix, nothing will ever work
+ mkdirp(this.prefix, cb)
}.bind(this))
}
@@ -287,15 +281,21 @@ Conf.prototype.save = function (where, cb) {
done(null)
})
} else {
- mkdirp(path.dirname(target.path), function (er) {
+ // we don't have to use inferOwner here, because gentle-fs will
+ // mkdir with the correctly inferred ownership. Just preserve it.
+ const dir = path.dirname(target.path)
+ mkdirp(dir, function (er) {
if (er) return then(er)
- fs.writeFile(target.path, data, 'utf8', function (er) {
+ fs.stat(dir, (er, st) => {
if (er) return then(er)
- if (where === 'user' && myUid && myGid) {
- fs.chown(target.path, +myUid, +myGid, then)
- } else {
- then()
- }
+ fs.writeFile(target.path, data, 'utf8', function (er) {
+ if (er) return then(er)
+ if (myUid === 0 && (myUid !== st.uid || myGid !== st.gid)) {
+ fs.chown(target.path, st.uid, st.gid, then)
+ } else {
+ then()
+ }
+ })
})
})
}