-import { ensureDir, remove } from 'fs-extra'
+import { ensureDir, readdir, remove } from 'fs-extra'
import passwordGenerator from 'password-generator'
+import { join } from 'path'
import { UserRole } from '@shared/models'
import { logger } from '../helpers/logger'
import { buildUser, createApplicationActor, createUserAccountAndChannelAndPlaylist } from '../lib/user'
// Cache directories
for (const key of Object.keys(cacheDirectories)) {
const dir = cacheDirectories[key]
- tasks.push(remove(dir))
+ tasks.push(removeDirectoryOrContent(dir))
}
- tasks.push(remove(CONFIG.STORAGE.TMP_DIR))
+ tasks.push(removeDirectoryOrContent(CONFIG.STORAGE.TMP_DIR))
return Promise.all(tasks)
}
+async function removeDirectoryOrContent (dir: string) {
+ try {
+ await remove(dir)
+ } catch (err) {
+ logger.debug('Cannot remove directory %s. Removing content instead.', dir, { err })
+
+ const files = await readdir(dir)
+
+ for (const file of files) {
+ await remove(join(dir, file))
+ }
+ }
+}
+
function createDirectoriesIfNotExist () {
const storage = CONFIG.STORAGE
const cacheDirectories = Object.keys(FILES_CACHE)