From a99f3f217a9e79362f863c13ba3e9fb0ec4acb60 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Sat, 23 Feb 2013 19:37:46 -0700 Subject: [PATCH] really basic version of mkdir -p for -o option Former-commit-id: 0fb635efd2043ee901c4f4eae7c6670d5b44a068 --- build.js | 8 ++++++++ test/test-build.js | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/build.js b/build.js index f7153b7a6..1bca26891 100755 --- a/build.js +++ b/build.js @@ -1510,6 +1510,14 @@ var outputPath = options.reduce(function(result, value, index) { if (/-o|--output/.test(value)) { result = options[index + 1]; + var cwd = process.cwd(); + path.dirname(result).split(path.sep).forEach(function(pathSegment){ + try { + fs.mkdirSync(pathSegment); + } catch(err){} + process.chdir(pathSegment); + }); + process.chdir(cwd); result = path.join(fs.realpathSync(path.dirname(result)), path.basename(result)); } return result; diff --git a/test/test-build.js b/test/test-build.js index ea3fa6eaa..b83449210 100644 --- a/test/test-build.js +++ b/test/test-build.js @@ -1073,9 +1073,11 @@ QUnit.module('output options'); (function() { + var nestedDir = 'test/mkdir/'; var commands = [ '-o a.js', - '--output a.js' + '--output a.js', + '-o ' + nestedDir + 'a.js' ]; commands.forEach(function(command, index) { @@ -1086,6 +1088,7 @@ build(['-s'].concat(command.split(' ')), function(data) { equal(path.basename(data.outputPath, '.js'), (++counter ? 'a.min' : 'a'), command); start(); + fs.existsSync(nestedDir) && fs.rmdirSync(nestedDir); }); }); });