Comparing version 0.3.0 to 0.3.1
42
index.js
@@ -6,3 +6,3 @@ var path = require('path'); | ||
function mkdirP (p, mode, f) { | ||
function mkdirP (p, mode, f, made) { | ||
if (typeof mode === 'function' || mode === undefined) { | ||
@@ -12,2 +12,3 @@ f = mode; | ||
} | ||
if (!made) made = null; | ||
@@ -19,8 +20,11 @@ var cb = f || function () {}; | ||
fs.mkdir(p, mode, function (er) { | ||
if (!er) return cb(); | ||
if (!er) { | ||
made = made || p; | ||
return cb(null, made); | ||
} | ||
switch (er.code) { | ||
case 'ENOENT': | ||
mkdirP(path.dirname(p), mode, function (er) { | ||
if (er) cb(er); | ||
else mkdirP(p, mode, cb); | ||
mkdirP(path.dirname(p), mode, function (er, made) { | ||
if (er) cb(er, made); | ||
else mkdirP(p, mode, cb, made); | ||
}); | ||
@@ -33,4 +37,4 @@ break; | ||
// let the original EEXIST be the failure reason. | ||
if (er2 || !stat.isDirectory()) cb(er) | ||
else cb(); | ||
if (er2 || !stat.isDirectory()) cb(er, made) | ||
else cb(null, made); | ||
}); | ||
@@ -40,3 +44,3 @@ break; | ||
default: | ||
cb(er); | ||
cb(er, made); | ||
break; | ||
@@ -47,12 +51,14 @@ } | ||
mkdirP.sync = function sync (p, mode) { | ||
mkdirP.sync = function sync (p, mode, made) { | ||
if (mode === undefined) { | ||
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) | ||
fs.mkdirSync(p, mode); | ||
made = made || p; | ||
} | ||
@@ -62,7 +68,6 @@ catch (err0) { | ||
case 'ENOENT' : | ||
var err1 = sync(path.dirname(p), mode) | ||
if (err1) throw err1; | ||
else return sync(p, mode); | ||
made = sync(path.dirname(p), mode, made); | ||
sync(p, mode, made); | ||
break; | ||
case 'EEXIST' : | ||
@@ -74,6 +79,5 @@ var stat; | ||
catch (err1) { | ||
throw err0 | ||
throw err0; | ||
} | ||
if (!stat.isDirectory()) throw err0; | ||
else return null; | ||
break; | ||
@@ -85,4 +89,4 @@ default : | ||
} | ||
return null; | ||
return made; | ||
}; |
{ | ||
"name" : "mkdirp", | ||
"description" : "Recursively mkdir, like `mkdir -p`", | ||
"version" : "0.3.0", | ||
"version" : "0.3.1", | ||
"author" : "James Halliday <mail@substack.net> (http://substack.net)", | ||
@@ -19,3 +19,3 @@ "main" : "./index", | ||
"devDependencies" : { | ||
"tap" : "0.0.x" | ||
"tap" : "~0.2.4" | ||
}, | ||
@@ -22,0 +22,0 @@ "license" : "MIT/X11", |
@@ -11,8 +11,13 @@ var mkdirp = require('../'); | ||
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); | ||
var file = '/tmp/' + [x,y,z].join('/'); | ||
var err = mkdirp.sync(file, 0755); | ||
if (err) t.fail(err); | ||
else path.exists(file, function (ex) { | ||
try { | ||
mkdirp.sync(file, 0755); | ||
} catch (err) { | ||
t.fail(err); | ||
return t.end(); | ||
} | ||
path.exists(file, function (ex) { | ||
if (!ex) t.fail('file not created') | ||
@@ -26,4 +31,4 @@ else fs.stat(file, function (err, stat) { | ||
} | ||
}) | ||
}) | ||
}); | ||
}); | ||
}); |
@@ -11,8 +11,13 @@ var mkdirp = require('../'); | ||
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); | ||
var file = '/tmp/' + [x,y,z].join('/'); | ||
var err = mkdirp.sync(file); | ||
if (err) t.fail(err); | ||
else path.exists(file, function (ex) { | ||
try { | ||
mkdirp.sync(file, 0755); | ||
} catch (err) { | ||
t.fail(err); | ||
return t.end(); | ||
} | ||
path.exists(file, function (ex) { | ||
if (!ex) t.fail('file not created') | ||
@@ -26,4 +31,4 @@ else fs.stat(file, function (err, stat) { | ||
} | ||
}) | ||
}) | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
17212
23
415
62
13