diff options
author | cjihrig <cjihrig@gmail.com> | 2019-08-16 13:17:21 -0400 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-08-23 13:59:07 -0700 |
commit | 53816cce699d02fb28a49b258e1fbc474568bbf8 (patch) | |
tree | b022ff51ac6aa0b0a55cc1a34241eb118d5c0f3a /lib/internal/fs/promises.js | |
parent | 2b1bcba385af380e3eaffd44315c83d3c0201cfe (diff) | |
download | android-node-v8-53816cce699d02fb28a49b258e1fbc474568bbf8.tar.gz android-node-v8-53816cce699d02fb28a49b258e1fbc474568bbf8.tar.bz2 android-node-v8-53816cce699d02fb28a49b258e1fbc474568bbf8.zip |
fs: add recursive option to rmdir()
This commit adds a recursive option to fs.rmdir(),
fs.rmdirSync(), and fs.promises.rmdir(). The implementation
is a port of the npm module rimraf.
PR-URL: https://github.com/nodejs/node/pull/29168
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Ben Coe <bencoe@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Diffstat (limited to 'lib/internal/fs/promises.js')
-rw-r--r-- | lib/internal/fs/promises.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index 7e6fae9273..5af2ffa763 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -18,6 +18,7 @@ const { ERR_METHOD_NOT_IMPLEMENTED } = require('internal/errors').codes; const { isUint8Array } = require('internal/util/types'); +const { rimrafPromises } = require('internal/fs/rimraf'); const { copyObject, getDirents, @@ -32,6 +33,7 @@ const { validateBufferArray, validateOffsetLengthRead, validateOffsetLengthWrite, + validateRmdirOptions, warnOnNonPortableTemplate } = require('internal/fs/utils'); const { @@ -300,9 +302,15 @@ async function ftruncate(handle, len = 0) { return binding.ftruncate(handle.fd, len, kUsePromises); } -async function rmdir(path) { - path = getValidatedPath(path); - return binding.rmdir(pathModule.toNamespacedPath(path), kUsePromises); +async function rmdir(path, options) { + path = pathModule.toNamespacedPath(getValidatedPath(path)); + options = validateRmdirOptions(options); + + if (options.recursive) { + return rimrafPromises(path, options); + } + + return binding.rmdir(path, kUsePromises); } async function fdatasync(handle) { |