node-tar
node-tar copied to clipboard
[FEATURE] Add ability to ignore files if they don't exist
What / Why
Would be nice if there was a way to specify in the tar options to ignore files if they don't exist.
In my code, I am specifying a list of files that I want to compress into an archive, but it's in a dynamic directory so sometimes the files get removed. This will spit out an error with lstat saying that it does not exist.
When
Simply have an argument in the options table for tar.c
How
Could probably do it and have it almost like a "less strict" mode. When the file is being retrieved for the archive, have a checker that is like if(!fs.existsSync(file)) { return } or something.
Current Behavior
Feeding in a list of files in an array, and having one of them not exist will pass an error.
Expected Behavior
Having an option to specify something like ignoreNotFound should have it just ignore any entries in the array that do not exist.
This is a completely reasonable idea, I think.
The inverse of this, I notice that tar.x({file}, ['not-found-in-archive']) does not warn that the file wasn't found in the archive, and tar xf file.tar not-found does warn, so that's another issue. (The reason is that the files list is converted into a filter function, but there's no check to see that every file listed was actually found.)
Maybe a decent way forward is to implement ignoreMissing: Boolean option, which defaults to true for extraction/parsing (and will warn if not ignored), and false for creation. Then in a semver major bump (ie, tar v7), we can make it default to true for both, but make it a warning rather than error if the file is missing, to match bsdtar? (Note that warnings are errors in strict: true mode, so anyone who still wants the crash can have it.)