1
- import * as core from '@actions/core'
1
+ import * as core from '@actions/core' ;
2
2
import {
3
3
checkFileExists ,
4
4
colorizePercentageByThreshold ,
@@ -7,106 +7,106 @@ import {
7
7
parseCoverage ,
8
8
roundPercentage ,
9
9
uploadArtifacts
10
- } from './utils'
10
+ } from './utils' ;
11
11
import {
12
12
Coverage ,
13
13
HandlebarContext ,
14
14
HandlebarContextCoverage
15
- } from './interfaces'
16
- import { writeFile } from 'fs/promises'
17
- import path from 'path'
18
- import Handlebars from 'handlebars'
19
- import { readFile } from 'node:fs/promises'
15
+ } from './interfaces' ;
16
+ import { writeFile } from 'fs/promises' ;
17
+ import path from 'path' ;
18
+ import Handlebars from 'handlebars' ;
19
+ import { readFile } from 'node:fs/promises' ;
20
20
21
21
export async function run ( ) : Promise < void > {
22
22
try {
23
- const filename = core . getInput ( 'filename' )
23
+ const filename = core . getInput ( 'filename' ) ;
24
24
25
25
if ( ! ( await checkFileExists ( filename ) ) ) {
26
- core . setFailed ( `Unable to access ${ filename } ` )
27
- return
26
+ core . setFailed ( `Unable to access ${ filename } ` ) ;
27
+ return ;
28
28
}
29
29
30
- core . debug ( `filename: ${ filename } ` )
30
+ core . debug ( `filename: ${ filename } ` ) ;
31
31
32
32
switch ( process . env . GITHUB_EVENT_NAME ) {
33
33
case 'pull_request' :
34
34
case 'pull_request_target' : {
35
- const { GITHUB_BASE_REF = '' } = process . env
36
- core . debug ( `GITHUB_BASE_REF: ${ GITHUB_BASE_REF } ` )
37
- const artifactPath = await downloadArtifacts ( GITHUB_BASE_REF )
38
- core . debug ( `artifactPath: ${ artifactPath } ` )
35
+ const { GITHUB_BASE_REF = '' } = process . env ;
36
+ core . debug ( `GITHUB_BASE_REF: ${ GITHUB_BASE_REF } ` ) ;
37
+ const artifactPath = await downloadArtifacts ( GITHUB_BASE_REF ) ;
38
+ core . debug ( `artifactPath: ${ artifactPath } ` ) ;
39
39
const baseCoverage =
40
40
artifactPath !== null
41
41
? await parseCoverage ( path . join ( artifactPath , filename ) )
42
- : null
42
+ : null ;
43
43
44
- core . info ( `Parsing coverage file: ${ filename } ...` )
45
- const headCoverage = await parseCoverage ( filename )
44
+ core . info ( `Parsing coverage file: ${ filename } ...` ) ;
45
+ const headCoverage = await parseCoverage ( filename ) ;
46
46
47
47
if ( headCoverage === null ) {
48
- core . setFailed ( `Unable to process ${ filename } ` )
49
- return
48
+ core . setFailed ( `Unable to process ${ filename } ` ) ;
49
+ return ;
50
50
}
51
51
52
- core . info ( `Complete` )
52
+ core . info ( `Complete` ) ;
53
53
54
54
//Base doesn't have an artifact
55
55
if ( baseCoverage === null ) {
56
56
core . warning (
57
57
`${ GITHUB_BASE_REF } is missing ${ filename } . See documentation on how to add this`
58
- )
58
+ ) ;
59
59
60
- core . info ( `Generating markdown from ${ headCoverage . basePath } ...` )
61
- await generateMarkdown ( headCoverage )
62
- core . info ( `Complete` )
60
+ core . info ( `Generating markdown from ${ headCoverage . basePath } ...` ) ;
61
+ await generateMarkdown ( headCoverage ) ;
62
+ core . info ( `Complete` ) ;
63
63
64
- return
64
+ return ;
65
65
}
66
66
67
67
core . info (
68
68
`Generating markdown between ${ headCoverage . basePath } and ${ baseCoverage . basePath } ...`
69
- )
70
- await generateMarkdown ( headCoverage , baseCoverage )
71
- core . info ( `Complete` )
72
- break
69
+ ) ;
70
+ await generateMarkdown ( headCoverage , baseCoverage ) ;
71
+ core . info ( `Complete` ) ;
72
+ break ;
73
73
}
74
74
case 'push' :
75
75
case 'schedule' :
76
76
case 'workflow_dispatch' :
77
77
{
78
- const { GITHUB_REF_NAME = '' } = process . env
79
- core . info ( `Uploading ${ filename } ...` )
80
- await uploadArtifacts ( [ filename ] , GITHUB_REF_NAME )
78
+ const { GITHUB_REF_NAME = '' } = process . env ;
79
+ core . info ( `Uploading ${ filename } ...` ) ;
80
+ await uploadArtifacts ( [ filename ] , GITHUB_REF_NAME ) ;
81
81
core . debug (
82
82
`GITHUB_REF_NAME: ${ GITHUB_REF_NAME } , filename: ${ filename } `
83
- )
84
- core . info ( `Complete` )
83
+ ) ;
84
+ core . info ( `Complete` ) ;
85
85
86
- core . info ( `Parsing coverage file: ${ filename } ...` )
87
- const headCoverage = await parseCoverage ( filename )
88
- core . info ( `Complete` )
86
+ core . info ( `Parsing coverage file: ${ filename } ...` ) ;
87
+ const headCoverage = await parseCoverage ( filename ) ;
88
+ core . info ( `Complete` ) ;
89
89
90
90
if ( headCoverage != null ) {
91
- core . info ( `Generating markdown from ${ headCoverage . basePath } ...` )
92
- await generateMarkdown ( headCoverage )
93
- core . info ( `Complete` )
91
+ core . info ( `Generating markdown from ${ headCoverage . basePath } ...` ) ;
92
+ await generateMarkdown ( headCoverage ) ;
93
+ core . info ( `Complete` ) ;
94
94
}
95
95
}
96
- break
96
+ break ;
97
97
default :
98
98
//TODO: return something here
99
99
}
100
100
} catch ( err : any ) {
101
- core . setFailed ( err . message )
101
+ core . setFailed ( err . message ) ;
102
102
}
103
103
}
104
104
105
105
export async function generateMarkdown (
106
106
headCoverage : Coverage ,
107
107
baseCoverage : Coverage | null = null
108
108
) : Promise < void > {
109
- const inputs = getInputs ( )
109
+ const inputs = getInputs ( ) ;
110
110
const {
111
111
overallCoverageFailThreshold,
112
112
failOnNegativeDifference,
@@ -120,15 +120,15 @@ export async function generateMarkdown(
120
120
negativeDifferenceThreshold,
121
121
onlyListChangedFiles,
122
122
skipPackageCoverage
123
- } = inputs
123
+ } = inputs ;
124
124
const overallDifferencePercentage = baseCoverage
125
125
? roundPercentage ( headCoverage . coverage - baseCoverage . coverage )
126
- : null
126
+ : null ;
127
127
128
- core . debug ( `headCoverage: ${ headCoverage . coverage } ` )
129
- core . debug ( `baseCoverage: ${ baseCoverage ?. coverage } ` )
130
- core . debug ( `overallDifferencePercentage: ${ overallDifferencePercentage } ` )
131
- core . debug ( `negativeDifferenceThreshold: ${ negativeDifferenceThreshold } ` )
128
+ core . debug ( `headCoverage: ${ headCoverage . coverage } ` ) ;
129
+ core . debug ( `baseCoverage: ${ baseCoverage ?. coverage } ` ) ;
130
+ core . debug ( `overallDifferencePercentage: ${ overallDifferencePercentage } ` ) ;
131
+ core . debug ( `negativeDifferenceThreshold: ${ negativeDifferenceThreshold } ` ) ;
132
132
133
133
if (
134
134
failOnNegativeDifference &&
@@ -140,41 +140,41 @@ export async function generateMarkdown(
140
140
) {
141
141
core . setFailed (
142
142
`FAIL: Overall coverage of dropped ${ overallDifferencePercentage } %, from ${ baseCoverage . coverage } % to ${ headCoverage . coverage } % which is below minimum threshold of ${ negativeDifferenceThreshold } %`
143
- )
143
+ ) ;
144
144
}
145
145
146
146
if ( overallCoverageFailThreshold > headCoverage . coverage ) {
147
147
core . setFailed (
148
148
`FAIL: Overall coverage of ${ headCoverage . coverage . toString ( ) } % below minimum threshold of ${ overallCoverageFailThreshold . toString ( ) } %.`
149
- )
149
+ ) ;
150
150
}
151
151
152
- let color = 'grey'
152
+ let color = 'grey' ;
153
153
if ( headCoverage . coverage < fileCoverageErrorMin ) {
154
- color = 'red'
154
+ color = 'red' ;
155
155
} else if (
156
156
headCoverage . coverage > fileCoverageErrorMin &&
157
157
headCoverage . coverage < fileCoverageWarningMax
158
158
) {
159
- color = 'orange'
159
+ color = 'orange' ;
160
160
} else if ( headCoverage . coverage > fileCoverageWarningMax ) {
161
- color = 'green'
161
+ color = 'green' ;
162
162
}
163
163
164
164
const templatePath =
165
165
baseCoverage === null
166
166
? withoutBaseCoverageTemplate
167
- : withBaseCoverageTemplate
167
+ : withBaseCoverageTemplate ;
168
168
169
169
if ( ! ( await checkFileExists ( templatePath ) ) ) {
170
- core . setFailed ( `Unable to access template ${ templatePath } ` )
171
- return
170
+ core . setFailed ( `Unable to access template ${ templatePath } ` ) ;
171
+ return ;
172
172
}
173
173
174
174
const contents = await readFile ( templatePath , {
175
175
encoding : 'utf8'
176
- } )
177
- const compiledTemplate = Handlebars . compile ( contents )
176
+ } ) ;
177
+ const compiledTemplate = Handlebars . compile ( contents ) ;
178
178
179
179
const context : HandlebarContext = {
180
180
minimum_allowed_coverage : `${ overallCoverageFailThreshold } %` ,
@@ -184,22 +184,22 @@ export async function generateMarkdown(
184
184
: Object . entries ( headCoverage . files )
185
185
. filter ( ( [ hash , file ] ) => {
186
186
if ( baseCoverage === null ) {
187
- return ! onlyListChangedFiles
187
+ return ! onlyListChangedFiles ;
188
188
}
189
189
190
190
const baseCoveragePercentage = baseCoverage . files [ hash ]
191
191
? baseCoverage . files [ hash ] . coverage
192
- : 0
192
+ : 0 ;
193
193
194
194
const differencePercentage = baseCoveragePercentage
195
195
? roundPercentage ( file . coverage - baseCoveragePercentage )
196
- : roundPercentage ( file . coverage )
196
+ : roundPercentage ( file . coverage ) ;
197
197
198
198
if ( onlyListChangedFiles && differencePercentage === 0 ) {
199
- return false
199
+ return false ;
200
200
}
201
201
202
- return true
202
+ return true ;
203
203
} )
204
204
. map ( ( [ hash , file ] ) => {
205
205
if ( baseCoverage === null ) {
@@ -210,16 +210,16 @@ export async function generateMarkdown(
210
210
fileCoverageWarningMax ,
211
211
fileCoverageErrorMin
212
212
) } `
213
- }
213
+ } ;
214
214
}
215
215
216
216
const baseCoveragePercentage = baseCoverage . files [ hash ]
217
217
? baseCoverage . files [ hash ] . coverage
218
- : 0
218
+ : 0 ;
219
219
220
220
const differencePercentage = baseCoveragePercentage
221
221
? roundPercentage ( file . coverage - baseCoveragePercentage )
222
- : roundPercentage ( file . coverage )
222
+ : roundPercentage ( file . coverage ) ;
223
223
224
224
if (
225
225
failOnNegativeDifference &&
@@ -230,7 +230,7 @@ export async function generateMarkdown(
230
230
) {
231
231
core . setFailed (
232
232
`${ headCoverage . files [ hash ] . relative } coverage difference was ${ differencePercentage } % which is below threshold of ${ negativeDifferenceThreshold } %`
233
- )
233
+ ) ;
234
234
}
235
235
236
236
return {
@@ -246,35 +246,35 @@ export async function generateMarkdown(
246
246
fileCoverageErrorMin
247
247
) } `,
248
248
difference : colorizePercentageByThreshold ( differencePercentage )
249
- }
249
+ } ;
250
250
} )
251
251
. sort ( ( a , b ) =>
252
252
a . package < b . package ? - 1 : a . package > b . package ? 1 : 0
253
253
) ,
254
254
overall_coverage : addOverallRow ( headCoverage , baseCoverage ) ,
255
255
inputs
256
- }
256
+ } ;
257
257
258
- context . show_package_coverage = ! skipPackageCoverage
258
+ context . show_package_coverage = ! skipPackageCoverage ;
259
259
260
260
if ( badge ) {
261
261
context . coverage_badge = `https://img.shields.io/badge/${ encodeURIComponent (
262
262
`Code Coverage-${ headCoverage . coverage } %-${ color } `
263
- ) } ?style=for-the-badge`
263
+ ) } ?style=for-the-badge`;
264
264
}
265
265
266
- const markdown = compiledTemplate ( context )
266
+ const markdown = compiledTemplate ( context ) ;
267
267
268
- const summary = core . summary . addRaw ( markdown )
268
+ const summary = core . summary . addRaw ( markdown ) ;
269
269
270
270
//If this is run after write the buffer is empty
271
- core . info ( `Writing results to ${ markdownFilename } .md` )
272
- await writeFile ( `${ markdownFilename } .md` , summary . stringify ( ) )
273
- core . setOutput ( 'file' , `${ markdownFilename } .md` )
274
- core . setOutput ( 'coverage' , headCoverage . coverage )
271
+ core . info ( `Writing results to ${ markdownFilename } .md` ) ;
272
+ await writeFile ( `${ markdownFilename } .md` , summary . stringify ( ) ) ;
273
+ core . setOutput ( 'file' , `${ markdownFilename } .md` ) ;
274
+ core . setOutput ( 'coverage' , headCoverage . coverage ) ;
275
275
276
- core . info ( `Writing job summary` )
277
- await summary . write ( )
276
+ core . info ( `Writing job summary` ) ;
277
+ await summary . write ( ) ;
278
278
}
279
279
280
280
/**
@@ -284,11 +284,11 @@ export function addOverallRow(
284
284
headCoverage : Coverage ,
285
285
baseCoverage : Coverage | null = null
286
286
) : HandlebarContextCoverage {
287
- const { overallCoverageFailThreshold} = getInputs ( )
287
+ const { overallCoverageFailThreshold } = getInputs ( ) ;
288
288
289
289
const overallDifferencePercentage = baseCoverage
290
290
? roundPercentage ( headCoverage . coverage - baseCoverage . coverage )
291
- : null
291
+ : null ;
292
292
293
293
if ( baseCoverage === null ) {
294
294
return {
@@ -298,7 +298,7 @@ export function addOverallRow(
298
298
0 ,
299
299
overallCoverageFailThreshold
300
300
) } `
301
- }
301
+ } ;
302
302
}
303
303
304
304
return {
@@ -314,5 +314,5 @@ export function addOverallRow(
314
314
overallCoverageFailThreshold
315
315
) } `,
316
316
difference : `${ colorizePercentageByThreshold ( overallDifferencePercentage ) } `
317
- }
317
+ } ;
318
318
}
0 commit comments