Format danger percents better (#12256)
Test Plan: yolo? yarn danger pr didn't give me any useful output. :\
Sophie Alpert committed
Feb 21, 2018 at 15:48 UTC
2bd1222a8216f578332fcbbbe31a4ab313c204a3
2 files changed
+25
-19
dangerfile.js
+12
-5
@@ -56,12 +56,19 @@ function generateMDTable(headers, body) {
56
* @param {string[]} headers
57
*/
58
function addPercent(change, includeEmoji) {
59
- if (change > 0 && includeEmoji) {
60
- return `:small_red_triangle:+${change}%`;
61
- } else if (change > 0) {
62
- return `+${change}%`;
59
+ if (!isFinite(change)) {
60
+ // When a new package is created
61
+ return 'n/a';
62
+ }
63
+ const formatted = (change * 100).toFixed(1);
64
+ if (/^-|^0(?:\.0+)$/.test(formatted)) {
65
+ return `${formatted}%`;
66
} else {
64
- return `${change}%`;
67
+ if (includeEmoji) {
68
+ return `:small_red_triangle:+${formatted}%`;
69
+ } else {
70
+ return `+${formatted}%`;
71
+ }
72
}
73
}
74
scripts/rollup/stats.js
+13
-14
@@ -20,21 +20,20 @@ function saveResults() {
20
);
21
}
22
23
-function percentChange(prev, current) {
24
- const change = Math.floor((current - prev) / prev * 100);
25
- // When a new package is created
26
- if (isFinite(change)) {
27
- return change;
28
- } else {
29
- return 100;
30
- }
23
+function fractionalChange(prev, current) {
24
+ return (current - prev) / prev;
25
}
26
27
function percentChangeString(change) {
34
- if (change > 0) {
35
- return chalk.red.bold(`+${change} %`);
36
- } else if (change <= 0) {
37
- return chalk.green.bold(change + ' %');
28
+ if (!isFinite(change)) {
29
+ // When a new package is created
30
+ return 'n/a';
31
+ }
32
+ const formatted = (change * 100).toFixed(1);
33
+ if (/^-|^0(?:\.0+)$/.test(formatted)) {
34
+ return `${formatted}%`;
35
+ } else {
36
+ return `+${formatted}%`;
37
}
38
}
39
@@ -72,10 +71,10 @@ function generateResultsArray(current, prevResults) {
71
packageName: result.packageName,
72
prevSize: filesize(prevSize),
73
prevFileSize: filesize(size),
75
- prevFileSizeChange: percentChange(prevSize, size),
74
+ prevFileSizeChange: fractionalChange(prevSize, size),
75
prevGzip: filesize(prevGzip),
76
prevGzipSize: filesize(gzip),
78
- prevGzipSizeChange: percentChange(prevGzip, gzip),
77
+ prevGzipSizeChange: fractionalChange(prevGzip, gzip),
78
};
79
// Strip any nulls
80
})