'use strict' const u = require('universalify').fromCallback const fs = require('graceful-fs') const path = require('path') const mkdir = require('../mkdirs') const remove = require('../remove') const emptyDir = u(function emptyDir (dir, callback) { callback = callback || function () {} fs.readdir(dir, (err, items) => { if (err) return mkdir.mkdirs(dir, callback) items = items.map(item => path.join(dir, item)) deleteItem() function deleteItem () { const item = items.pop() if (!item) return callback() remove.remove(item, err => { if (err) return callback(err) deleteItem() }) } }) }) function emptyDirSync (dir) { let items try { items = fs.readdirSync(dir) } catch (err) { return mkdir.mkdirsSync(dir) } items.forEach(item => { item = path.join(dir, item) remove.removeSync(item) }) } module.exports = { emptyDirSync, emptydirSync: emptyDirSync, emptyDir, emptydir: emptyDir }