@@ -106,9 +106,9 @@ exports.make = function(callback) {
106
106
p = p . replace ( REGAPPENDREPLACE , '/' ) ;
107
107
}
108
108
109
- var exists = false ;
109
+ var exists = null ;
110
110
try {
111
- exists = Fs . statSync ( Path . join ( target , p ) ) != null ;
111
+ exists = Fs . statSync ( Path . join ( target , p ) ) ;
112
112
} catch ( e ) { }
113
113
114
114
if ( ( dirname === pathupdate || dirname === pathstartup ) && ! exists ) {
@@ -244,7 +244,6 @@ function normalize(path) {
244
244
function cleanFiles ( callback ) {
245
245
246
246
var path = PATH . root ( CONF . directory_src ) ;
247
- var length = path . length - 1 ;
248
247
var blacklist = { } ;
249
248
250
249
blacklist [ CONF . directory_public ] = 1 ;
@@ -268,7 +267,7 @@ function cleanFiles(callback) {
268
267
}
269
268
270
269
if ( meta . files && meta . files . length ) {
271
- for ( var i = 0 , length = meta . files . length ; i < length ; i ++ ) {
270
+ for ( var i = 0 ; i < meta . files . length ; i ++ ) {
272
271
var filename = meta . files [ i ] ;
273
272
var dir = filename . substring ( 0 , filename . indexOf ( '/' , 1 ) + 1 ) ;
274
273
if ( ! blacklist [ dir ] ) {
@@ -280,11 +279,33 @@ function cleanFiles(callback) {
280
279
}
281
280
282
281
if ( meta . directories && meta . directories . length ) {
283
- meta . directories . quicksort ( 'length ' ) ;
284
- for ( var i = 0 , length = meta . directories . length ; i < length ; i ++ ) {
282
+ meta . directories . quicksort ( 'length_desc ' ) ;
283
+ for ( var i = 0 ; i < meta . directories . length ; i ++ ) {
285
284
try {
286
- if ( ! blacklist [ meta . directories [ i ] ] )
287
- Fs . rmdirSync ( Path . join ( path , meta . directories [ i ] ) ) ;
285
+
286
+ var p = Path . join ( path , meta . directories [ i ] ) ;
287
+
288
+ if ( blacklist [ meta . directories [ i ] ] )
289
+ continue ;
290
+
291
+ while ( true ) {
292
+
293
+ var files = Fs . readdirSync ( p ) ;
294
+ if ( files . length )
295
+ break ;
296
+
297
+ try {
298
+ Fs . rmdirSync ( p ) ;
299
+ } catch ( e ) {
300
+ break ;
301
+ }
302
+
303
+ p = Path . join ( path , '..' ) ;
304
+
305
+ if ( p . length < path || p === path )
306
+ break ;
307
+ }
308
+
288
309
} catch ( e ) { }
289
310
}
290
311
}
@@ -320,14 +341,19 @@ function copyFiles(files, callback) {
320
341
return next ( ) ;
321
342
322
343
var filename = Path . join ( path , file . name ) ;
323
- var exists = false ;
324
344
var ext = U . getExtension ( file . name ) ;
325
345
var append = file . type === 3 ;
346
+ var exists = null ;
326
347
327
348
try {
328
- exists = Fs . statSync ( filename ) != null ;
349
+ exists = Fs . statSync ( filename ) ;
329
350
} catch ( e ) { }
330
351
352
+ if ( exists && ( ! exists . isFile ( ) | exists . isSocket ( ) ) ) {
353
+ next ( ) ;
354
+ return ;
355
+ }
356
+
331
357
// DB file
332
358
if ( file . type === 1 && exists ) {
333
359
next ( ) ;
0 commit comments