File tree 3 files changed +118
-1
lines changed
3 files changed +118
-1
lines changed Original file line number Diff line number Diff line change
1
+ var path = require ( 'path' ) ;
2
+ var fs = require ( 'fs' ) ;
3
+
4
+ module . exports = function ( base , extFilter ) {
5
+ var stack = [ base ] ;
6
+ var cursor ;
7
+ var collectedFiles = { } ;
8
+
9
+ while ( cursor = stack . pop ( ) )
10
+ {
11
+ if ( ! fs . existsSync ( cursor ) )
12
+ continue ;
13
+
14
+ var stat = fs . lstatSync ( cursor ) ;
15
+
16
+ if ( stat . isSymbolicLink ( ) )
17
+ {
18
+ var resolvedLink = path . resolve ( cursor , fs . readlinkSync ( cursor ) ) ;
19
+
20
+ stack . push ( resolvedLink ) ;
21
+ }
22
+ else if ( stat . isDirectory ( ) )
23
+ {
24
+ var items = fs . readdirSync ( cursor ) ;
25
+
26
+ for ( var i = 0 ; i < items . length ; i ++ )
27
+ stack . push ( path . join ( cursor , items [ i ] ) ) ;
28
+ }
29
+ else
30
+ {
31
+ if ( extFilter )
32
+ {
33
+ var fileExt = path . extname ( cursor ) ;
34
+
35
+ if ( fileExt . toLowerCase ( ) === extFilter . toLowerCase ( ) )
36
+ collectedFiles [ cursor ] = true ;
37
+ }
38
+ else
39
+ collectedFiles [ cursor ] = true ;
40
+ }
41
+ }
42
+
43
+ return collectedFiles ;
44
+ } ;
Original file line number Diff line number Diff line change
1
+ var collectFiles = require ( './collectFiles' ) ;
2
+
1
3
module . exports = function ( tasks ) {
2
4
var result = { } ;
5
+ var basePaths = { } ;
6
+ var usedFiles = { } ;
7
+ var collectedFiles = { } ;
3
8
4
9
tasks . forEach ( function ( task ) {
5
10
var failures = result [ task . name ] = [ ] ;
@@ -20,7 +25,39 @@ module.exports = function(tasks){
20
25
message : warn . message + ' at ' + filename
21
26
} ) ;
22
27
} ) ;
28
+
29
+ if ( task . result . usedFiles )
30
+ {
31
+ basePaths [ task . result . usedFiles . collectPath ] = true ;
32
+ task . result . usedFiles . items . forEach ( function ( filename ) {
33
+ usedFiles [ task . result . usedFiles . basePath + filename ] = true ;
34
+ } ) ;
35
+ }
23
36
} ) ;
24
37
38
+ if ( Object . keys ( basePaths ) . length )
39
+ {
40
+ for ( var basePath in basePaths )
41
+ {
42
+ var files = collectFiles ( basePath ) ;
43
+
44
+ for ( var fileName in files )
45
+ collectedFiles [ fileName ] = true ;
46
+ }
47
+
48
+ for ( var usedFile in usedFiles )
49
+ delete collectedFiles [ usedFile ] ;
50
+
51
+ for ( var unusedName in collectedFiles )
52
+ {
53
+ unusedName = unusedName . slice ( process . cwd ( ) . length ) ;
54
+ result [ 'unused files' ] = result [ 'unused files' ] || [ ] ;
55
+ result [ 'unused files' ] . push ( {
56
+ loc : unusedName ,
57
+ message : unusedName
58
+ } ) ;
59
+ }
60
+ }
61
+
25
62
return result ;
26
63
} ;
Original file line number Diff line number Diff line change 1
- module . exports = function ( warns , fileFilter ) {
1
+ var isChildProcess = typeof process . send == 'function' ; // child process has send method
2
+ var collectFiles = require ( './collectFiles' ) ;
3
+
4
+ module . exports = function ( flow , options ) {
2
5
var result = { } ;
6
+ var warns = flow . warns ;
7
+ var fileFilter = options . filter ;
3
8
4
9
warns . forEach ( function ( warn ) {
5
10
var filename = warn . file || '<UnknownFile>' ;
@@ -16,5 +21,36 @@ module.exports = function(warns, fileFilter){
16
21
} ) ;
17
22
} ) ;
18
23
24
+ if ( ! isChildProcess )
25
+ {
26
+ var basePath ;
27
+ var collectedFiles ;
28
+
29
+ if ( options . warnUnusedFiles && flow . usedFiles )
30
+ {
31
+ var usedFilesInfo = flow . usedFiles ;
32
+ var usedFiles = { } ;
33
+
34
+ basePath = usedFilesInfo . collectPath ;
35
+ collectedFiles = collectFiles ( basePath ) ;
36
+
37
+ usedFilesInfo . items . forEach ( function ( filename ) {
38
+ usedFiles [ usedFilesInfo . basePath + filename ] = true ;
39
+ } ) ;
40
+
41
+ for ( var usedFile in usedFiles )
42
+ delete collectedFiles [ usedFile ] ;
43
+
44
+ for ( var unusedName in collectedFiles ) {
45
+ unusedName = unusedName . slice ( process . cwd ( ) . length ) ;
46
+ result [ 'unused files' ] = result [ 'unused files' ] || [ ] ;
47
+ result [ 'unused files' ] . push ( {
48
+ loc : unusedName ,
49
+ message : unusedName
50
+ } ) ;
51
+ }
52
+ }
53
+ }
54
+
19
55
return result ;
20
56
} ;
You can’t perform that action at this time.
0 commit comments