vendor/node_modules/mkdirp/index.js in stylus-source-0.49.3 vs vendor/node_modules/mkdirp/index.js in stylus-source-0.54.5
- old
+ new
@@ -1,75 +1,91 @@
var path = require('path');
var fs = require('fs');
+var _0777 = parseInt('0777', 8);
module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-function mkdirP (p, mode, f, made) {
- if (typeof mode === 'function' || mode === undefined) {
- f = mode;
- mode = 0777 & (~process.umask());
+function mkdirP (p, opts, f, made) {
+ if (typeof opts === 'function') {
+ f = opts;
+ opts = {};
}
+ else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
if (!made) made = null;
-
+
var cb = f || function () {};
- if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
-
- fs.mkdir(p, mode, function (er) {
+
+ xfs.mkdir(p, mode, function (er) {
if (!er) {
made = made || p;
return cb(null, made);
}
switch (er.code) {
case 'ENOENT':
- mkdirP(path.dirname(p), mode, function (er, made) {
+ mkdirP(path.dirname(p), opts, function (er, made) {
if (er) cb(er, made);
- else mkdirP(p, mode, cb, made);
+ else mkdirP(p, opts, cb, made);
});
break;
// In the case of any other error, just see if there's a dir
// there already. If so, then hooray! If not, then something
// is borked.
default:
- fs.stat(p, function (er2, stat) {
+ xfs.stat(p, function (er2, stat) {
// if the stat fails, then that's super weird.
// let the original error be the failure reason.
if (er2 || !stat.isDirectory()) cb(er, made)
else cb(null, made);
});
break;
}
});
}
-mkdirP.sync = function sync (p, mode, made) {
+mkdirP.sync = function sync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
if (mode === undefined) {
- mode = 0777 & (~process.umask());
+ mode = _0777 & (~process.umask());
}
if (!made) made = null;
- if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
try {
- fs.mkdirSync(p, mode);
+ xfs.mkdirSync(p, mode);
made = made || p;
}
catch (err0) {
switch (err0.code) {
case 'ENOENT' :
- made = sync(path.dirname(p), mode, made);
- sync(p, mode, made);
+ made = sync(path.dirname(p), opts, made);
+ sync(p, opts, made);
break;
// In the case of any other error, just see if there's a dir
// there already. If so, then hooray! If not, then something
// is borked.
default:
var stat;
try {
- stat = fs.statSync(p);
+ stat = xfs.statSync(p);
}
catch (err1) {
throw err0;
}
if (!stat.isDirectory()) throw err0;