From 853513b92685969d83da769db7c649b69ea9a27b Mon Sep 17 00:00:00 2001 From: jmt-gh Date: Mon, 6 Jun 2022 18:51:08 -0700 Subject: [PATCH] update approach for ensuring download directory always exists --- server/Server.js | 3 ++- server/managers/AbMergeManager.js | 22 ++++++++++++++++++++-- server/managers/CacheManager.js | 6 +++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/server/Server.js b/server/Server.js index 579d6a79..73fef075 100644 --- a/server/Server.js +++ b/server/Server.js @@ -139,7 +139,8 @@ class Server { await this.checkUserMediaProgress() // Remove invalid user item progress await this.purgeMetadata() // Remove metadata folders without library item await this.cacheManager.ensureCachePaths() - + await this.abMergeManager.ensureDownloadDirPath() + await this.backupManager.init() await this.logManager.init() this.podcastManager.init() diff --git a/server/managers/AbMergeManager.js b/server/managers/AbMergeManager.js index d01256e0..5aa40233 100644 --- a/server/managers/AbMergeManager.js +++ b/server/managers/AbMergeManager.js @@ -16,11 +16,28 @@ class AbMergeManager { this.clientEmitter = clientEmitter this.downloadDirPath = Path.join(global.MetadataPath, 'downloads') + this.downloadDirPathExist = false this.pendingDownloads = [] this.downloads = [] } + async ensureDownloadDirPath() { // Creates download path if necessary and sets owner and permissions + if (this.downloadDirPathExist) return + + var pathCreated = false + if (!(await fs.pathExists(this.downloadDirPath))) { + await fs.mkdir(this.downloadDirPath) + pathCreated = true + } + + if (pathCreated) { + await filePerms.setDefault(this.downloadDirPath) + } + + this.downloadDirPathExist = true + } + getDownload(downloadId) { return this.downloads.find(d => d.id === downloadId) } @@ -48,7 +65,7 @@ class AbMergeManager { } catch (error) { return false } - } + }z async startAudiobookMerge(user, libraryItem) { var downloadId = getId('abmerge') @@ -73,7 +90,8 @@ class AbMergeManager { try { - await fs.ensureDir(download.dirpath) + await fs.mkdir(download.dirpath) + Logger.error(`[AbMergeManager] Failed to make directory ${download.dirpath}`) } catch (error) { Logger.error(`[AbMergeManager] Failed to make directory ${download.dirpath}`) Logger.debug(`[AbMergeManager] Make directory error: ${error}`) diff --git a/server/managers/CacheManager.js b/server/managers/CacheManager.js index c707ed0f..3a0e5bf1 100644 --- a/server/managers/CacheManager.js +++ b/server/managers/CacheManager.js @@ -19,17 +19,17 @@ class CacheManager { var pathsCreated = false if (!(await fs.pathExists(this.CachePath))) { - await fs.ensureDir(this.CachePath) + await fs.mkdir(this.CachePath) pathsCreated = true } if (!(await fs.pathExists(this.CoverCachePath))) { - await fs.ensureDir(this.CoverCachePath) + await fs.mkdir(this.CoverCachePath) pathsCreated = true } if (!(await fs.pathExists(this.ImageCachePath))) { - await fs.ensureDir(this.ImageCachePath) + await fs.mkdir(this.ImageCachePath) pathsCreated = true }