From 7ec926ff56fca50bf55191c7f056746fa77d8aa2 Mon Sep 17 00:00:00 2001 From: Ken Sheedlo Date: Mon, 15 Jul 2013 14:15:02 -0700 Subject: fix(writer): fix makeDir directory tree bug --- docs/src/writer.js | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) (limited to 'docs/src/writer.js') diff --git a/docs/src/writer.js b/docs/src/writer.js index cdfa12d6..412d5437 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) { -- cgit v1.2.3