@@ -2,10 +2,34 @@ require('../lib/bootstrap-local');
2
2
3
3
const path = require ( 'path' ) ;
4
4
const glob = require ( 'glob' ) ;
5
+ const chalk = require ( 'chalk' ) ;
5
6
const spdxSatisfies = require ( 'spdx-satisfies' ) ;
6
- // TODO use logger.Logger
7
- const logger = require ( '@ngtools/logger ' ) ;
7
+ const Logger = require ( '@ngtools/ logger' ) . Logger ;
8
+ require ( 'rxjs/add/operator/filter ' ) ;
8
9
10
+ // Configure logger
11
+ const logger = new Logger ( 'test-licenses' ) ;
12
+
13
+ logger
14
+ . subscribe ( ( entry ) => {
15
+ let color = chalk . white ;
16
+ let output = process . stdout ;
17
+ switch ( entry . level ) {
18
+ case 'info' : color = chalk . white ; break ;
19
+ case 'warn' : color = chalk . yellow ; break ;
20
+ case 'error' : color = chalk . red ; output = process . stderr ; break ;
21
+ case 'fatal' : color = ( x ) => chalk . bold ( chalk . red ( x ) ) ; output = process . stderr ; break ;
22
+ }
23
+
24
+ output . write ( color ( entry . message ) + '\n' ) ;
25
+ } ) ;
26
+
27
+ logger
28
+ . filter ( ( entry ) => entry . level == 'fatal' )
29
+ . subscribe ( ( ) => {
30
+ process . stderr . write ( 'A fatal error happened. See details above.' ) ;
31
+ process . exit ( 1 ) ;
32
+ } ) ;
9
33
10
34
// SPDX defined licenses, see https://spdx.org/licenses/.
11
35
// TODO(hansl): confirm this list
@@ -28,7 +52,7 @@ const acceptedSpdxLicenses = [
28
52
const licenseReplacements = [
29
53
{ name : 'Apache License, Version 2.0' , replacement : 'Apache-2.0' } ,
30
54
{ name : 'AFLv2.1' , replacement : 'AFL-2.1' } ,
31
- // I guess they are kinda the same?
55
+ // I guess these are kinda the same?
32
56
{ name : 'BSD' , replacement : 'BSD-2-Clause' } ,
33
57
{ name : 'BSD-like' , replacement : 'BSD-2-Clause' } ,
34
58
{ name : 'MIT/X11' , replacement : 'MIT' } ,
@@ -62,7 +86,7 @@ const ignoredPackages = [
62
86
63
87
const root = path . resolve ( __dirname , '../' ) ;
64
88
65
- // Find all folder directly under a `node_modules` that have a package.json.
89
+ // Find all folders directly under a `node_modules` that have a package.json.
66
90
const allPackages = glob . sync ( path . join ( root , '**/node_modules/*/package.json' ) , { nodir : true } )
67
91
. map ( packageJsonPath => {
68
92
const packageJson = require ( packageJsonPath ) ;
@@ -93,7 +117,7 @@ const allPackages = glob.sync(path.join(root, '**/node_modules/*/package.json'),
93
117
return pkg ;
94
118
} )
95
119
96
- // TODO: show total number of packages
120
+ logger . info ( `Testing ${ allPackages . length } packages.\n` )
97
121
98
122
// Packages with bad licenses are those that neither pass SPDX nor are ignored.
99
123
const badLicensePackages = allPackages
@@ -102,11 +126,11 @@ const badLicensePackages = allPackages
102
126
103
127
// Report packages with bad licenses
104
128
if ( badLicensePackages . length > 0 ) {
105
- console . log ( 'Invalid package licences found:\n ' ) ;
106
- badLicensePackages . forEach ( pkg => console . log ( `${ pkg . id } (${ pkg . path } ): ${ pkg . license } ` ) ) ;
107
- process . exit ( 1 ) ;
129
+ logger . error ( 'Invalid package licences found:' ) ;
130
+ badLicensePackages . forEach ( pkg => logger . error ( `${ pkg . id } (${ pkg . path } ): ${ pkg . license } ` ) ) ;
131
+ logger . fatal ( `\n ${ badLicensePackages . length } total packages with invalid licenses.` ) ;
108
132
} else {
109
- console . log ( 'All package licenses are valid.' ) ;
133
+ logger . info ( 'All package licenses are valid.' ) ;
110
134
}
111
135
112
136
// Check if a license is accepted by an array of accepted licenses
0 commit comments