| 'use strict' |
| |
| const u = require('universalify').fromCallback |
| const fs = require('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 |
| } |