@@ -3,15 +3,14 @@ let path = require('path');
33let cnst = require ( 'constants' ) ;
44
55let os = require ( 'os' ) ;
6- let rimraf = require ( 'rimraf' ) ;
7- let mkdirp = require ( 'mkdirp' ) ;
6+ let { rimraf, rimrafSync } = require ( 'rimraf' ) ;
7+ let { mkdirp, mkdirpSync } = require ( 'mkdirp' ) ;
88let osTmpdir = require ( 'os' ) . tmpdir ( ) ;
99
10- const rimrafSync = rimraf . sync ;
11-
1210//== helpers
1311//
1412let dir = path . resolve ( os . tmpdir ( ) ) ;
13+ let cleanupOptions = { maxRetries : 6 } ;
1514
1615let RDWR_EXCL = cnst . O_CREAT | cnst . O_TRUNC | cnst . O_RDWR | cnst . O_EXCL ;
1716
@@ -123,7 +122,7 @@ function cleanupFilesSync() {
123122 var count = 0 ;
124123 var toDelete ;
125124 while ( ( toDelete = filesToDelete . shift ( ) ) !== undefined ) {
126- rimrafSync ( toDelete , { maxBusyTries : 6 } ) ;
125+ rimrafSync ( toDelete , cleanupOptions ) ;
127126 count ++ ;
128127 }
129128 return count ;
@@ -144,29 +143,20 @@ function cleanupFiles(callback) {
144143 callback ( null , count ) ;
145144 return promise ;
146145 }
147- var toDelete ;
148- var rimrafCallback = function ( err ) {
149- if ( ! left ) {
150- // Prevent processing if aborted
151- return ;
152- }
153- if ( err ) {
154- // This shouldn't happen; pass error to callback and abort
155- // processing
156- callback ( err ) ;
157- left = 0 ;
158- return ;
159- } else {
160- count ++ ;
161- }
162- left -- ;
163- if ( ! left ) {
146+ var toDelete = filesToDelete . splice ( 0 ) ;
147+ ( async function ( ) {
148+ try {
149+ for ( const filePath of toDelete ) {
150+ await rimraf ( filePath , cleanupOptions ) ;
151+ count ++ ;
152+ left -- ;
153+ }
164154 callback ( null , count ) ;
155+ } catch ( err ) {
156+ left = 0 ;
157+ callback ( err , count ) ;
165158 }
166- } ;
167- while ( ( toDelete = filesToDelete . shift ( ) ) !== undefined ) {
168- rimraf ( toDelete , { maxBusyTries : 6 } , rimrafCallback ) ;
169- }
159+ } ) ( ) ;
170160 return promise ;
171161}
172162
@@ -177,7 +167,7 @@ function cleanupDirsSync() {
177167 var count = 0 ;
178168 var toDelete ;
179169 while ( ( toDelete = dirsToDelete . shift ( ) ) !== undefined ) {
180- rimrafSync ( toDelete , { maxBusyTries : 6 } ) ;
170+ rimrafSync ( toDelete , cleanupOptions ) ;
181171 count ++ ;
182172 }
183173 return count ;
@@ -198,29 +188,20 @@ function cleanupDirs(callback) {
198188 callback ( null , count ) ;
199189 return promise ;
200190 }
201- var toDelete ;
202- var rimrafCallback = function ( err ) {
203- if ( ! left ) {
204- // Prevent processing if aborted
205- return ;
206- }
207- if ( err ) {
208- // rimraf handles most "normal" errors; pass the error to the
209- // callback and abort processing
210- callback ( err , count ) ;
211- left = 0 ;
212- return ;
213- } else {
214- count ++ ;
215- }
216- left -- ;
217- if ( ! left ) {
191+ var toDelete = dirsToDelete . splice ( 0 ) ;
192+ ( async function ( ) {
193+ try {
194+ for ( const dirPath of toDelete ) {
195+ await rimraf ( dirPath , cleanupOptions ) ;
196+ count ++ ;
197+ left -- ;
198+ }
218199 callback ( null , count ) ;
200+ } catch ( err ) {
201+ left = 0 ;
202+ callback ( err , count ) ;
219203 }
220- } ;
221- while ( ( toDelete = dirsToDelete . shift ( ) ) !== undefined ) {
222- rimraf ( toDelete , { maxBusyTries : 6 } , rimrafCallback ) ;
223- }
204+ } ) ( ) ;
224205 return promise ;
225206}
226207
@@ -262,18 +243,18 @@ const mkdir = (affixes, callback) => {
262243 callback = p [ 1 ] ;
263244
264245 let dirPath = generateName ( affixes , 'd-' ) ;
265- mkdirp ( dirPath , 0o700 , ( err ) => {
266- if ( ! err ) {
267- deleteDirOnExit ( dirPath ) ;
268- }
246+ mkdirp ( dirPath , { mode : 0o700 } ) . then ( function ( ) {
247+ deleteDirOnExit ( dirPath ) ;
248+ callback ( null , dirPath ) ;
249+ } , function ( err ) {
269250 callback ( err , dirPath ) ;
270251 } ) ;
271252 return promise ;
272253}
273254
274255const mkdirSync = ( affixes ) => {
275256 let dirPath = generateName ( affixes , 'd-' ) ;
276- mkdirp . sync ( dirPath , 0o700 ) ;
257+ mkdirpSync ( dirPath , { mode : 0o700 } ) ;
277258 deleteDirOnExit ( dirPath ) ;
278259 return dirPath ;
279260}
0 commit comments