You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					49 lines
				
				992 B
			
		
		
			
		
	
	
					49 lines
				
				992 B
			| 
								 
											3 years ago
										 
									 | 
							
								'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
							 | 
						||
| 
								 | 
							
								}
							 |