Skip to content

Commit 3ec7133

Browse files
author
Marcello Bastéa-Forte
committed
cleanup/refactor
- add eslint + standardjs formatting - split out tests into separate suites - use json for test output comparison
1 parent 9a688fb commit 3ec7133

15 files changed

+2159
-503
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

.eslintrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": [ "standard" ]
3+
}

bin/licensecheck

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/usr/bin/env node
2-
require('../cli.js')
2+
require('../cli.js')

cli.js

Lines changed: 138 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
// Based on code shamelessly lifted from https://github.com/shtylman/node-weaklink (with permission)
22

3-
var colors = require('colors')
43
var treeify = require('treeify')
54
var fs = require('fs')
65
var stripJsonComments = require('strip-json-comments')
76

87
var licensecheck = require('./index.js')
98

109
var path = '.'
11-
var overridesPath = "./licenses.json"
10+
var overridesPath = './licenses.json'
1211
var missingOnly = false
1312
var flat = false
1413
var format = 'color'
@@ -20,175 +19,171 @@ var once = false
2019
var seen = {}
2120
var hidelist = [] // list of licenses to omit from output
2221

23-
function isOmittedLicense(license) {
22+
function isOmittedLicense (license) {
2423
for (var i = 0; i < hidelist.length; i++) {
25-
if (license.split(' ')[0] === hidelist[i])
24+
if (license.split(' ')[0] === hidelist[i]) {
2625
return true
26+
}
2727
}
2828
return false
2929
}
3030

3131
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+
}
6868
}
6969

7070
var overrides = fs.existsSync(overridesPath) &&
71-
JSON.parse(stripJsonComments(fs.readFileSync(overridesPath, "utf8"))) || {}
71+
JSON.parse(stripJsonComments(fs.readFileSync(overridesPath, 'utf8'))) || {}
7272

73-
var licenses = licensecheck(".", path, overrides, includeDevDependencies, includeOptDependencies)
73+
var licenses = licensecheck('.', path, overrides, includeDevDependencies, includeOptDependencies)
7474
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+
})
7979
} else {
80-
treeify.asLines(makeDependencyTree(licenses), false, console.log)
80+
treeify.asLines(makeDependencyTree(licenses), false, console.log)
8181
}
8282

83-
84-
function isMissing(info) {
85-
return !info.licenseFile || info.license === 'nomatch'
83+
function isMissing (info) {
84+
return !info.licenseFile || info.license === 'nomatch'
8685
}
8786

88-
function simplifyFile(file) {
89-
return file.replace(/\/node_modules\//g, ' ~ ')
87+
function simplifyFile (file) {
88+
return file.replace(/\/node_modules\//g, ' ~ ')
9089
}
9190

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+
}
136132
} else {
137-
throw Error("invalid format: " + format)
133+
key += 'MISSING' + sep
138134
}
139-
return key;
135+
} else {
136+
throw Error('invalid format: ' + format)
137+
}
138+
return key
140139
}
141140

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]
154151
})
152+
})
155153

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 {}
171159
}
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
173165
return tree
166+
}
167+
168+
return tree
174169
}
175170

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+
}
192186
})
193-
return map
187+
})
188+
return map
194189
}

0 commit comments

Comments
 (0)