UNPKG

1.53 kBJavaScriptView Raw
1
2var fs = require('fs');
3var readdirr = require('./readdirr').readdirr;
4
5
6/**
7 * Remove directory recursively.
8 *
9 * @param {String} directory path
10 * @param {Function} callback
11 * @api public
12 */
13
14exports.rmdirr = function (dpath, cb) {
15 readdirr(dpath, function (err, dirs, files) {
16 if (err) return cb(err);
17 exports.rmfiles(files, function (err) {
18 if (err) return cb(err);
19 exports.rmdirs(dirs, cb);
20 });
21 });
22}
23
24/**
25 * Remove a list of files.
26 *
27 * @param {Array} files
28 * @param {Function} callback
29 * @api public
30 */
31
32exports.rmfiles = function (files, cb) {
33 (function loop (index) {
34 if (index == files.length) return cb();
35 fs.unlink(files[index], function (err) {
36 if (err) return cb(err);
37 loop(++index);
38 });
39 }(0));
40}
41
42/**
43 * Remove a list of directories.
44 *
45 * @param {Array} dirs
46 * @param {Function} callback
47 * @api public
48 */
49
50exports.rmdirs = function (dirs, cb) {
51 dirs.sort(desc);
52 (function loop (index) {
53 if (index == dirs.length) return cb();
54 fs.rmdir(dirs[index], function (err) {
55 if (err) return cb(err);
56 loop(++index);
57 });
58 }(0));
59}
60
61/**
62 * Sort in descending order.
63 *
64 * @param {String} a
65 * @param {String} b
66 * @api private
67 */
68
69function desc(a, b) {
70 if (a > b) return -1;
71 if (a < b) return 1;
72 return 0;
73}
74
75/*
76 // rmdirr example
77
78 var path = require('path');
79 var recursive = require('recursive-fs');
80
81 var root = path.resolve(process.argv[2]);
82 recursive.rmdirr(root, function (err) {
83 if (err) {
84 console.log(err);
85 } else {
86 console.log('DONE!');
87 }
88 });
89*/