summaryrefslogtreecommitdiff
path: root/lib/internal/fs/promises.js
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-08-16 13:17:21 -0400
committerRich Trott <rtrott@gmail.com>2019-08-23 13:59:07 -0700
commit53816cce699d02fb28a49b258e1fbc474568bbf8 (patch)
treeb022ff51ac6aa0b0a55cc1a34241eb118d5c0f3a /lib/internal/fs/promises.js
parent2b1bcba385af380e3eaffd44315c83d3c0201cfe (diff)
downloadandroid-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.js14
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) {