|
1 | 1 | 'use strict' |
2 | 2 |
|
3 | | -const fs = require('fs') |
4 | | -const path = require('path') |
| 3 | +const {getCommonPathLength} = require('common-path-start') |
| 4 | +const {readFileSync} = require('fs') |
| 5 | +const {basename, join, normalize} = require('path') |
5 | 6 |
|
6 | 7 | const objectValues = require('object.values') |
7 | 8 | if (!Object.values) { |
8 | 9 | objectValues.shim() |
9 | 10 | } |
10 | 11 |
|
11 | 12 | function formatIssues (issues, panelColor) { |
12 | | - return issues.map(function (issue) { |
| 13 | + return issues.map(issue => { |
13 | 14 | const extract = issue.extract.split('<').join('<') |
14 | 15 | const message = issue.message.split('<').join('<').split('"').join('"') |
15 | 16 | const line = issue.line |
@@ -54,22 +55,26 @@ function formatFile (file) { |
54 | 55 | return content |
55 | 56 | } |
56 | 57 |
|
57 | | -module.exports = function (results, options) { |
| 58 | +module.exports = (results, options) => { |
58 | 59 | const showFileNameOnly = options && options.showFileNameOnly |
| 60 | + const showCommonPathOnly = !(options && options.showCommonPathOnly === false) |
| 61 | + const commonPathLength = showCommonPathOnly && |
| 62 | + getCommonPathLength(results.map(result => normalize(result.file))) |
59 | 63 | const files = {} |
60 | | - var errorCount = 0 |
61 | | - var warningCount = 0 |
62 | | - var noticeCount = 0 |
| 64 | + let errorCount = 0 |
| 65 | + let warningCount = 0 |
| 66 | + let noticeCount = 0 |
63 | 67 |
|
64 | | - results.forEach(function (result) { |
65 | | - const name = path.normalize(result.file) |
| 68 | + results.forEach(result => { |
| 69 | + const name = normalize(result.file) |
66 | 70 | const severity = result.type |
67 | | - var file = files[name] |
68 | | - var fileName, issues |
| 71 | + let file = files[name] |
| 72 | + let fileName, issues |
69 | 73 | if (!file) { |
70 | 74 | if (showFileNameOnly) { |
71 | | - fileName = path.parse(name) |
72 | | - fileName = fileName.name + fileName.ext |
| 75 | + fileName = basename(name) |
| 76 | + } else if (commonPathLength) { |
| 77 | + fileName = name.substr(commonPathLength) |
73 | 78 | } else { |
74 | 79 | fileName = name |
75 | 80 | } |
@@ -102,8 +107,8 @@ module.exports = function (results, options) { |
102 | 107 | }) |
103 | 108 | }) |
104 | 109 |
|
105 | | - const template = fs.readFileSync( |
106 | | - path.join(__dirname, 'template.html'), 'utf8') |
| 110 | + const template = readFileSync( |
| 111 | + join(__dirname, 'template.html'), 'utf8') |
107 | 112 |
|
108 | 113 | const buttonMarkup = |
109 | 114 | '<button class="btn btn-sm btn-danger">Errors <span class="badge">' + errorCount + '</span></button>' + |
|
0 commit comments