diff options
author | Florrie <towerofnix@gmail.com> | 2017-08-14 10:03:13 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2017-08-14 10:03:13 -0300 |
commit | 3f7bdfd702e47e7063c5fc31a1279c3cd3065fce (patch) | |
tree | ab0211f68e189e955f8b0b2acebbd01c4b9c475b | |
parent | b0ca90529ceff209a41bc2c26b25073f5fcc4da2 (diff) |
Make safeUnlink safer
-rw-r--r-- | src/playlist-utils.js | 18 | ||||
-rw-r--r-- | todo.txt | 1 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/playlist-utils.js b/src/playlist-utils.js index 765a317..479b0c5 100644 --- a/src/playlist-utils.js +++ b/src/playlist-utils.js @@ -293,7 +293,7 @@ function isTrack(obj) { // return typeof array[1] === 'string' } -function safeUnlink(file, playlist) { +async function safeUnlink(file, playlist) { if (!playlist) { throw new Error('No playlist given to safe-unlink.') } @@ -311,7 +311,21 @@ function safeUnlink(file, playlist) { ) } - return unlink(file) + try { + await unlink(file) + } catch(err) { + if (err.code === 'ENOENT') { + console.trace( + `Attempted to delete file "${file}" which does not exist. This ` + + 'could be because of a temporary file being automatically deleted ' + + 'by the system before now, or because of http-music attempting to ' + + 'delete a temporary file which it has already deleted; otherwise ' + + 'this is almost certainly a bug.' + ) + } else { + throw err + } + } } module.exports = { diff --git a/todo.txt b/todo.txt index 8f537c8..34cafab 100644 --- a/todo.txt +++ b/todo.txt @@ -302,6 +302,7 @@ TODO: safeUnlink probably shouldn't throw/reject if it fails to delete its given file (e.g. if a temporary file was automatically purged by the system before safeUnlink). Having a warning might be better? (Since *most* of the time it's probably a bug.) + (Done!) TODO: A shuffle-groups picker would be fun! (That is, it would take a grouplike, then shuffle all the items on the TOP level; so it would |