foalts2-cli
Version:
CLI tool for FoalTS
39 lines (38 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rmdir = void 0;
// std
const fs_1 = require("fs");
const path_1 = require("path");
const util_1 = require("util");
/**
* Remove a directory and all its contents, including any subdirectories and files.
*
* @export
* @param {string} path - The path of the directory
* @returns {Promise<void>}
*/
async function rmdir(path) {
let contents;
try {
contents = await util_1.promisify(fs_1.readdir)(path);
}
catch (error) {
if (error.code === 'ENOENT') {
return;
}
throw error;
}
await Promise.all(contents.map(content => {
const subPath = path_1.join(path, content);
return util_1.promisify(fs_1.stat)(subPath)
.then(stats => {
if (stats.isDirectory()) {
return rmdir(subPath);
}
return util_1.promisify(fs_1.unlink)(subPath);
});
}));
await util_1.promisify(fs_1.rmdir)(path);
}
exports.rmdir = rmdir;