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 | ||
|  | } |