From ec8407c65de6ad548f734680f8e59a05e8142514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20Lach=C3=A8ze?= Date: Tue, 11 Jul 2017 00:56:45 +0200 Subject: [PATCH] Recursively mkdir the parent directories --- lib/renderer/extensions/storage.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/renderer/extensions/storage.js b/lib/renderer/extensions/storage.js index 57672b8a2832..a6e605c4dd9b 100644 --- a/lib/renderer/extensions/storage.js +++ b/lib/renderer/extensions/storage.js @@ -8,6 +8,17 @@ const getChromeStoragePath = (storageType, extensionId) => { app.getPath('userData'), `/Chrome Storage/${extensionId}-${storageType}.json`) } +// recursively create directory and parent directories if needed +const mkdirParent = (dirPath, mode, callback) => { + fs.mkdir(dirPath, mode, error => { + if (error && error.errno === 34) { + fs.mkdirParent(path.dirname(dirPath), mode, callback) + fs.mkdirParent(dirPath, mode, callback) + } + callback && callback(error) + }) +} + const readChromeStorageFile = (storageType, extensionId, cb) => { const filePath = getChromeStoragePath(storageType, extensionId) fs.readFile(filePath, 'utf8', (err, data) => { @@ -21,8 +32,8 @@ const readChromeStorageFile = (storageType, extensionId, cb) => { const writeChromeStorageFile = (storageType, extensionId, data, cb) => { const filePath = getChromeStoragePath(storageType, extensionId) - fs.mkdir(path.dirname(filePath), err => { - if (err) { /* we just ignore the errors of mkdir */ } + mkdirParent(path.dirname(filePath), err => { + if (err) { /* we just ignore the errors of mkdir or mkdirParent */ } fs.writeFile(filePath, data, cb) }) }