diff --git a/src/main.js b/src/main.js index d45cc975b8d52f084e0949535b37b8a9fbb8bc25..405288f29f9a312ed853a336f18760b0e85d8e13 100644 --- a/src/main.js +++ b/src/main.js @@ -120,6 +120,26 @@ function getNodeCachedDataDir() { var dir = path.join(app.getPath('userData'), 'CachedData'); + return mkdirp(dir); +} + +function mkdirp(dir) { + return mkdir(dir) + .then(null, function (err) { + if (err && err.code === 'ENOENT') { + var parent = path.dirname(dir); + if (parent !== dir) { // if not arrived at root + return mkdirp(parent) + .then(function () { + return mkdir(dir); + }); + } + } + throw err; + }); +} + +function mkdir(dir) { return new Promise(function (resolve, reject) { fs.mkdir(dir, function (err) { if (err && err.code !== 'EEXIST') { @@ -186,5 +206,5 @@ app.once('ready', function () { nodeCachedDataDir.then(function () { require('./bootstrap-amd').bootstrap('vs/code/electron-main/main'); - }); + }, console.error); });