UNPKG

891 BJavaScriptView Raw
1var fs = require('fs');
2
3/**
4 * Offers functionality similar to mkdir -p
5 *
6 * Asynchronous operation. No arguments other than a possible exception
7 * are given to the completion callback.
8 */
9function mkdir_p(path, mode, callback, position) {
10 mode = mode || 0777;
11 position = position || 1;
12 parts = require('path').normalize(path).split('/');
13
14 if (position >= parts.length) {
15 if (callback) {
16 return callback();
17 } else {
18 return true;
19 }
20 }
21
22 var directory = '/' + parts.slice(1, position + 1).join('/');
23 fs.stat(directory, function(err) {
24 if (err === null) {
25 mkdir_p(path, mode, callback, position + 1);
26 } else {
27 fs.mkdir(directory, mode, function (err) {
28 mkdir_p(path, mode, callback, position + 1);
29 })
30 }
31 })
32}
33
34exports.mkdir_p = mkdir_p;