-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
ManifestsToReport.kt
56 lines (43 loc) · 2 KB
/
ManifestsToReport.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package it.krzeminski.githubactionstyping
import it.krzeminski.githubactionstyping.github.getBooleanInput
import it.krzeminski.githubactionstyping.parsing.TypesManifest
import it.krzeminski.githubactionstyping.parsing.parseManifest
import it.krzeminski.githubactionstyping.parsing.parseTypesManifest
import it.krzeminski.githubactionstyping.reporting.toPlaintextReport
import it.krzeminski.githubactionstyping.validation.ItemValidationResult
import it.krzeminski.githubactionstyping.validation.validate
fun manifestsToReport(manifest: String, typesManifest: String): Pair<Boolean, String> {
val parsedTypesManifest = if (typesManifest.isNotBlank()) {
parseTypesManifest(typesManifest)
} else {
TypesManifest()
}
val parsedManifest = parseManifest(manifest)
val inputsInTypesManifest = parsedTypesManifest.inputs.keys
val inputsInManifest = parsedManifest.inputs.keys
if (inputsInManifest != inputsInTypesManifest) {
throw IllegalStateException("The same set of inputs should exist in action manifest and types manifest!")
}
val outputsInTypesManifest = parsedTypesManifest.outputs.keys
val outputsInManifest = parsedManifest.outputs.keys
if (outputsInManifest != outputsInTypesManifest) {
throw IllegalStateException("The same set of outputs should exist in action manifest and types manifest!")
}
if (getBooleanInput("verbose")) {
println("Action's manifest:")
println(manifest)
println("Parsed manifest:")
println(parsedManifest)
println("Action's types manifest:")
println(typesManifest)
println("Parsed types manifest:")
println(parsedTypesManifest)
println()
println("==============================================")
println()
}
val validationResult = parsedTypesManifest.validate()
val isValid = validationResult.overallResult is ItemValidationResult.Valid
val report = validationResult.toPlaintextReport()
return Pair(isValid, report)
}