diff options
author | isaacs <i@izs.me> | 2012-02-04 23:03:17 +0400 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-02-04 23:03:17 +0400 |
commit | cb262a31812366cea9c54abd6b7292f9dccbb70f (patch) | |
tree | abf1d6880c6e4b6ab4951281ee679f4b37cf2296 /node_modules/mkdirp | |
parent | 81ee7cb48105909d32f133b887adaea7470c3266 (diff) |
Update fstream and mkdirp
The hope that this will fix #2078
Diffstat (limited to 'node_modules/mkdirp')
-rw-r--r-- | node_modules/mkdirp/README.markdown | 37 | ||||
-rw-r--r-- | node_modules/mkdirp/index.js | 45 | ||||
-rw-r--r-- | node_modules/mkdirp/package.json | 2 |
3 files changed, 80 insertions, 4 deletions
diff --git a/node_modules/mkdirp/README.markdown b/node_modules/mkdirp/README.markdown index 0393c4ea5..b4dd75fdc 100644 --- a/node_modules/mkdirp/README.markdown +++ b/node_modules/mkdirp/README.markdown @@ -3,14 +3,14 @@ mkdirp Like `mkdir -p`, but in node.js! -Example +example ======= pow.js ------ var mkdirp = require('mkdirp'); - mkdirp('/tmp/foo/bar/baz', 0755, function (err) { + mkdirp('/tmp/foo/bar/baz', function (err) { if (err) console.error(err) else console.log('pow!') }); @@ -19,3 +19,36 @@ Output pow! And now /tmp/foo/bar/baz exists, huzzah! + +methods +======= + +var mkdirp = require('mkdirp'); + +mkdirp(dir, mode, cb) +--------------------- + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +mkdirp.sync(dir, mode) +---------------------- + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +install +======= + +With [npm](http://npmjs.org) do: + + npm install mkdirp + +license +======= + +MIT/X11 diff --git a/node_modules/mkdirp/index.js b/node_modules/mkdirp/index.js index 660280146..25f43adfa 100644 --- a/node_modules/mkdirp/index.js +++ b/node_modules/mkdirp/index.js @@ -4,6 +4,11 @@ var fs = require('fs'); module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; function mkdirP (p, mode, f) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + var cb = f || function () {}; if (typeof mode === 'string') mode = parseInt(mode, 8); p = path.resolve(p); @@ -23,7 +28,6 @@ function mkdirP (p, mode, f) { // if the stat fails, then that's super weird. // let the original EEXIST be the failure reason. if (er2 || !stat.isDirectory()) cb(er) - else if ((stat.mode & 0777) !== mode) fs.chmod(p, mode, cb); else cb(); }); break; @@ -34,3 +38,42 @@ function mkdirP (p, mode, f) { } }); } + +mkdirP.sync = function sync (p, mode) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode) + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + var err1 = sync(path.dirname(p), mode) + if (err1) throw err1; + else return sync(p, mode); + break; + + case 'EEXIST' : + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0 + } + if (!stat.isDirectory()) throw err0; + else return null; + break; + default : + throw err0 + break; + } + } + + return null; +}; diff --git a/node_modules/mkdirp/package.json b/node_modules/mkdirp/package.json index 99149f747..1bf9ac782 100644 --- a/node_modules/mkdirp/package.json +++ b/node_modules/mkdirp/package.json @@ -1,7 +1,7 @@ { "name" : "mkdirp", "description" : "Recursively mkdir, like `mkdir -p`", - "version" : "0.1.0", + "version" : "0.3.0", "author" : "James Halliday <mail@substack.net> (http://substack.net)", "main" : "./index", "keywords" : [ |