From f731c77e8f772e88746f4a41c30e7a867eed2328 Mon Sep 17 00:00:00 2001 From: Ken Sheedlo Date: Mon, 15 Jul 2013 14:15:02 -0700 Subject: [PATCH] fix(writer): fix makeDir directory tree bug --- docs/src/writer.js | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/src/writer.js b/docs/src/writer.js index cdfa12d6d9d7..412d5437dbf6 100644 --- a/docs/src/writer.js +++ b/docs/src/writer.js @@ -13,31 +13,32 @@ exports.output = output; function output(file, content) { var fullPath = pathUtils.join(OUTPUT_DIR,file); var dir = pathUtils.dirname(fullPath); - return Q.when(exports.makeDir(dir), function(error) { - qfs.write(fullPath, exports.toString(content)); + return Q.when(exports.makeDir(dir), function () { + return qfs.write(fullPath, exports.toString(content)); }); } //recursively create directory exports.makeDir = function(p) { - p = pathUtils.normalize(p); - var parts = p.split(pathUtils.sep); - var path = "."; - - // Recursively rebuild directory structure - return qfs.exists(p). - then(function createPart(exists) { - if(!exists && parts.length) { - path = pathUtils.join(path, parts.shift()); - return qfs.exists(path).then(function(exists) { - if (!exists) { - return qfs.makeDirectory(path).then(createPart, createPart); - } else { - return createPart(); - } - }); - } - }); + p = pathUtils.normalize(p); + var parts = p.split(pathUtils.sep); + + var makePartialDir = function makePartialDir(path) { + return qfs.makeDirectory(path).then(function() { + if (parts.length) { + return makePartialDir(pathUtils.join(path, parts.shift())); + } + }, function(error) { + if (error.code !== 'EEXIST') { + throw error; + } + if (parts.length) { + return makePartialDir(pathUtils.join(path, parts.shift())); + } + }); + }; + + return makePartialDir(pathUtils.join('.', parts.shift())); }; exports.copyTemplate = function(filename) {