1
1
// Based on code shamelessly lifted from https://github.com/shtylman/node-weaklink (with permission)
2
2
3
- var colors = require ( 'colors' )
4
3
var treeify = require ( 'treeify' )
5
4
var fs = require ( 'fs' )
6
5
var stripJsonComments = require ( 'strip-json-comments' )
7
6
8
7
var licensecheck = require ( './index.js' )
9
8
10
9
var path = '.'
11
- var overridesPath = " ./licenses.json"
10
+ var overridesPath = ' ./licenses.json'
12
11
var missingOnly = false
13
12
var flat = false
14
13
var format = 'color'
@@ -20,175 +19,171 @@ var once = false
20
19
var seen = { }
21
20
var hidelist = [ ] // list of licenses to omit from output
22
21
23
- function isOmittedLicense ( license ) {
22
+ function isOmittedLicense ( license ) {
24
23
for ( var i = 0 ; i < hidelist . length ; i ++ ) {
25
- if ( license . split ( ' ' ) [ 0 ] === hidelist [ i ] )
24
+ if ( license . split ( ' ' ) [ 0 ] === hidelist [ i ] ) {
26
25
return true
26
+ }
27
27
}
28
28
return false
29
29
}
30
30
31
31
for ( var i = 2 ; i < process . argv . length ; i ++ ) {
32
- var arg = process . argv [ i ]
33
- switch ( arg ) {
34
- case '--dev' :
35
- includeDevDependencies = true
36
- break
37
- case '--opt' :
38
- includeOptDependencies = true
39
- break
40
- case '-m' :
41
- case '--missing-only' :
42
- missingOnly = true
43
- break
44
- case '-h' :
45
- case '--highlight' :
46
- highlight = new RegExp ( process . argv [ ++ i ] , 'i' )
47
- break
48
- case '-f' :
49
- case '--flat' :
50
- flat = true
51
- break
52
- case '--tsv' :
53
- format = 'tsv'
54
- flat = true
55
- break
56
- case '-o' :
57
- case '--once' :
58
- once = true
59
- break
60
- case '--hide' :
61
- i ++
62
- hidelist = ( process . argv [ i ] || "" ) . split ( "," )
63
- break
64
- default :
65
- path = arg
66
- break
67
- }
32
+ var arg = process . argv [ i ]
33
+ switch ( arg ) {
34
+ case '--dev' :
35
+ includeDevDependencies = true
36
+ break
37
+ case '--opt' :
38
+ includeOptDependencies = true
39
+ break
40
+ case '-m' :
41
+ case '--missing-only' :
42
+ missingOnly = true
43
+ break
44
+ case '-h' :
45
+ case '--highlight' :
46
+ highlight = new RegExp ( process . argv [ ++ i ] , 'i' )
47
+ break
48
+ case '-f' :
49
+ case '--flat' :
50
+ flat = true
51
+ break
52
+ case '--tsv' :
53
+ format = 'tsv'
54
+ flat = true
55
+ break
56
+ case '-o' :
57
+ case '--once' :
58
+ once = true
59
+ break
60
+ case '--hide' :
61
+ i ++
62
+ hidelist = ( process . argv [ i ] || '' ) . split ( ',' )
63
+ break
64
+ default :
65
+ path = arg
66
+ break
67
+ }
68
68
}
69
69
70
70
var overrides = fs . existsSync ( overridesPath ) &&
71
- JSON . parse ( stripJsonComments ( fs . readFileSync ( overridesPath , " utf8" ) ) ) || { }
71
+ JSON . parse ( stripJsonComments ( fs . readFileSync ( overridesPath , ' utf8' ) ) ) || { }
72
72
73
- var licenses = licensecheck ( "." , path , overrides , includeDevDependencies , includeOptDependencies )
73
+ var licenses = licensecheck ( '.' , path , overrides , includeDevDependencies , includeOptDependencies )
74
74
if ( flat ) {
75
- var dependencies = makeFlatDependencyMap ( licenses )
76
- Object . keys ( dependencies ) . sort ( ) . forEach ( function ( key ) {
77
- console . log ( dependencies [ key ] )
78
- } )
75
+ var dependencies = makeFlatDependencyMap ( licenses )
76
+ Object . keys ( dependencies ) . sort ( ) . forEach ( function ( key ) {
77
+ console . log ( dependencies [ key ] )
78
+ } )
79
79
} else {
80
- treeify . asLines ( makeDependencyTree ( licenses ) , false , console . log )
80
+ treeify . asLines ( makeDependencyTree ( licenses ) , false , console . log )
81
81
}
82
82
83
-
84
- function isMissing ( info ) {
85
- return ! info . licenseFile || info . license === 'nomatch'
83
+ function isMissing ( info ) {
84
+ return ! info . licenseFile || info . license === 'nomatch'
86
85
}
87
86
88
- function simplifyFile ( file ) {
89
- return file . replace ( / \/ n o d e _ m o d u l e s \/ / g, ' ~ ' )
87
+ function simplifyFile ( file ) {
88
+ return file . replace ( / \/ n o d e _ m o d u l e s \/ / g, ' ~ ' )
90
89
}
91
90
92
- function getDescription ( info ) {
93
- var key
94
- var sep
95
- var file
96
- if ( format === 'color' ) {
97
- sep = ' ── '
98
- key = info . name + ( " (" + info . version + ")" ) . grey
99
- if ( info . depLevel ) {
100
- key = key + ( " [" + info . depLevel + "]" ) . bold . yellow
101
- }
102
-
103
- key = key + sep
104
-
105
- file = info . licenseFile
106
- if ( file ) {
107
- file = simplifyFile ( file )
108
- if ( info . license . startsWith ( 'unknown' ) ) {
109
- key += info . license . yellow
110
- } else if ( info . license === 'nomatch' ) {
111
- key += ( 'unmatched license file: ' + file ) . yellow
112
- } else if ( highlight && highlight . test ( info . license ) ) {
113
- key += info . license . magenta + sep + file . grey
114
- } else {
115
- key += info . license . green + sep + file . grey
116
- }
117
- } else {
118
- key += "no license found" . red
119
- }
120
- } else if ( format === 'tsv' ) {
121
- sep = '\t'
122
- key = info . name + " (" + info . version + ")" + sep
123
-
124
- file = info . licenseFile
125
- if ( file ) {
126
- if ( info . license . startsWith ( 'unknown' ) ) {
127
- key += info . license . yellow
128
- } else if ( info . license === 'nomatch' ) {
129
- key += 'unmatched: ' + file + sep
130
- } else {
131
- key += info . license + sep + file
132
- }
133
- } else {
134
- key += "MISSING" + sep
135
- }
91
+ function getDescription ( info ) {
92
+ var key
93
+ var sep
94
+ var file
95
+ if ( format === 'color' ) {
96
+ sep = ' ── '
97
+ key = info . name + ( ' (' + info . version + ')' ) . grey
98
+ if ( info . depLevel ) {
99
+ key = key + ( ' [' + info . depLevel + ']' ) . bold . yellow
100
+ }
101
+
102
+ key = key + sep
103
+
104
+ file = info . licenseFile
105
+ if ( file ) {
106
+ file = simplifyFile ( file )
107
+ if ( info . license . startsWith ( 'unknown' ) ) {
108
+ key += info . license . yellow
109
+ } else if ( info . license === 'nomatch' ) {
110
+ key += ( 'unmatched license file: ' + file ) . yellow
111
+ } else if ( highlight && highlight . test ( info . license ) ) {
112
+ key += info . license . magenta + sep + file . grey
113
+ } else {
114
+ key += info . license . green + sep + file . grey
115
+ }
116
+ } else {
117
+ key += 'no license found' . red
118
+ }
119
+ } else if ( format === 'tsv' ) {
120
+ sep = '\t'
121
+ key = info . name + ' (' + info . version + ')' + sep
122
+
123
+ file = info . licenseFile
124
+ if ( file ) {
125
+ if ( info . license . startsWith ( 'unknown' ) ) {
126
+ key += info . license . yellow
127
+ } else if ( info . license === 'nomatch' ) {
128
+ key += 'unmatched: ' + file + sep
129
+ } else {
130
+ key += info . license + sep + file
131
+ }
136
132
} else {
137
- throw Error ( "invalid format: " + format )
133
+ key += 'MISSING' + sep
138
134
}
139
- return key ;
135
+ } else {
136
+ throw Error ( 'invalid format: ' + format )
137
+ }
138
+ return key
140
139
}
141
140
142
-
143
- function makeDependencyTree ( info ) {
144
- if ( missingOnly && ! isMissing ( info ) && ! info . deps . some ( isMissing ) ) {
145
- return { }
146
- }
147
- var key = getDescription ( info ) ;
148
- var tree = { }
149
- var dependencies = tree [ key ] = { }
150
- info . deps . map ( makeDependencyTree ) . forEach ( function ( dependency ) {
151
- Object . keys ( dependency ) . forEach ( function ( key ) {
152
- dependencies [ key ] = dependency [ key ]
153
- } )
141
+ function makeDependencyTree ( info ) {
142
+ if ( missingOnly && ! isMissing ( info ) && ! info . deps . some ( isMissing ) ) {
143
+ return { }
144
+ }
145
+ var key = getDescription ( info )
146
+ var tree = { }
147
+ var dependencies = tree [ key ] = { }
148
+ info . deps . map ( makeDependencyTree ) . forEach ( function ( dependency ) {
149
+ Object . keys ( dependency ) . forEach ( function ( key ) {
150
+ dependencies [ key ] = dependency [ key ]
154
151
} )
152
+ } )
155
153
156
- // Check if the license of the package is to be hidden
157
- if ( isOmittedLicense ( info . license ) ) {
158
-
159
- // Omit the package if it has no dependancies with non hidden license
160
- if ( Object . keys ( tree [ key ] ) . length == 0 )
161
- return { }
162
-
163
- // Otherwise include only the name and version of the package with its dependancies
164
- else {
165
- var dependencies = tree [ key ]
166
- var key = info . name + ( " (" + info . version + ")" ) . grey
167
- var tree = { }
168
- tree [ key ] = dependencies
169
- return tree
170
- }
154
+ // Check if the license of the package is to be hidden
155
+ if ( isOmittedLicense ( info . license ) ) {
156
+ // Omit the package if it has no dependancies with non hidden license
157
+ if ( Object . keys ( tree [ key ] ) . length === 0 ) {
158
+ return { }
171
159
}
172
-
160
+ // Otherwise include only the name and version of the package with its dependancies
161
+ dependencies = tree [ key ]
162
+ key = info . name + ( ' (' + info . version + ')' ) . grey
163
+ tree = { }
164
+ tree [ key ] = dependencies
173
165
return tree
166
+ }
167
+
168
+ return tree
174
169
}
175
170
176
- function makeFlatDependencyMap ( info ) {
177
- var map = { }
178
- if ( ( ! missingOnly || isMissing ( info ) ) && ( ! isOmittedLicense ( info . license ) ) ) {
179
- map [ info . name + '@' + info . version ] = getDescription ( info )
180
- }
181
- if ( once && seen [ info . name + '@' + info . version ] ) {
182
- return { }
183
- }
184
- seen [ info . name + '@' + info . version ] = true
185
- info . deps . forEach ( function ( dep ) {
186
- var subMap = makeFlatDependencyMap ( dep )
187
- Object . keys ( subMap ) . forEach ( function ( key ) {
188
- if ( ! map [ key ] ) {
189
- map [ key ] = subMap [ key ]
190
- }
191
- } )
171
+ function makeFlatDependencyMap ( info ) {
172
+ var map = { }
173
+ if ( ( ! missingOnly || isMissing ( info ) ) && ( ! isOmittedLicense ( info . license ) ) ) {
174
+ map [ info . name + '@' + info . version ] = getDescription ( info )
175
+ }
176
+ if ( once && seen [ info . name + '@' + info . version ] ) {
177
+ return { }
178
+ }
179
+ seen [ info . name + '@' + info . version ] = true
180
+ info . deps . forEach ( function ( dep ) {
181
+ var subMap = makeFlatDependencyMap ( dep )
182
+ Object . keys ( subMap ) . forEach ( function ( key ) {
183
+ if ( ! map [ key ] ) {
184
+ map [ key ] = subMap [ key ]
185
+ }
192
186
} )
193
- return map
187
+ } )
188
+ return map
194
189
}
0 commit comments