4
4
package main
5
5
6
6
import (
7
+ "bytes"
7
8
"fmt"
8
9
"io"
10
+ "os"
9
11
"strings"
10
12
"syscall/js"
11
13
12
14
t2html "github.com/buildkite/terminal-to-html"
13
- "github.com/fatih/color"
15
+
14
16
"github.com/zegl/kube-score/config"
15
17
"github.com/zegl/kube-score/domain"
16
18
"github.com/zegl/kube-score/parser"
19
+ "github.com/zegl/kube-score/renderer/ci"
17
20
"github.com/zegl/kube-score/renderer/human"
21
+ "github.com/zegl/kube-score/renderer/json_v2"
22
+ "github.com/zegl/kube-score/renderer/junit"
23
+ "github.com/zegl/kube-score/renderer/sarif"
18
24
"github.com/zegl/kube-score/score"
19
25
"github.com/zegl/kube-score/score/checks"
26
+ "golang.org/x/term"
20
27
)
21
28
22
29
func main () {
@@ -33,15 +40,16 @@ func (inputReader) Name() string {
33
40
}
34
41
35
42
func handleScore (this js.Value , inputs []js.Value ) interface {} {
36
- if len (inputs ) == 0 {
43
+ if len (inputs ) != 2 {
37
44
fmt .Println ("Unexpected number of arguments" )
38
45
return "Unexpected number of arguments"
39
46
}
40
47
41
- fmt .Println (inputs [0 ].String ())
48
+ inputYaml := inputs [0 ].String ()
49
+ format := inputs [1 ].String ()
42
50
43
51
reader := & inputReader {
44
- Reader : strings .NewReader (inputs [ 0 ]. String () ),
52
+ Reader : strings .NewReader (inputYaml ),
45
53
}
46
54
47
55
files := []domain.NamedReader {reader }
@@ -63,27 +71,52 @@ func handleScore(this js.Value, inputs []js.Value) interface{} {
63
71
64
72
allChecks := score .RegisterAllChecks (allObjs , checksConfig , runConfig )
65
73
66
- card , err := score .Score (allObjs , allChecks , runConfig )
74
+ scoreCard , err := score .Score (allObjs , allChecks , runConfig )
67
75
if err != nil {
68
76
fmt .Println (err )
69
77
return string (err .Error ())
70
78
}
71
79
72
- color .NoColor = false
73
- output , err := human .Human (card , 0 , 110 , true )
74
- if err != nil {
75
- fmt .Println (err )
76
- return string (err .Error ())
80
+ var r io.Reader
81
+ switch format {
82
+ case "json" :
83
+ r = json_v2 .Output (scoreCard )
84
+ case "human" :
85
+ termWidth , _ , err := term .GetSize (int (os .Stdin .Fd ()))
86
+ // Assume a width of 80 if it can't be detected
87
+ if err != nil {
88
+ termWidth = 80
89
+ }
90
+ body , err := human .Human (scoreCard , 0 , termWidth , true )
91
+ if err != nil {
92
+ fmt .Println (err )
93
+ return string (err .Error ())
94
+ }
95
+
96
+ bodyBytes , err := io .ReadAll (body )
97
+ if err != nil {
98
+ fmt .Println (err )
99
+ return string (err .Error ())
100
+ }
101
+
102
+ htmlBody := t2html .Render (bodyBytes )
103
+ r = bytes .NewReader (htmlBody )
104
+ case "ci" :
105
+ r = ci .CI (scoreCard )
106
+ case "sarif" :
107
+ r = sarif .Output (scoreCard )
108
+ case "junit" :
109
+ r = junit .JUnit (scoreCard )
110
+ default :
111
+ return fmt .Errorf ("error: unknown format" )
77
112
}
78
113
79
- body , err := io .ReadAll (output )
114
+ body , err := io .ReadAll (r )
80
115
fmt .Println ("body" , body )
81
116
if err != nil {
82
117
fmt .Println (err )
83
118
return string (err .Error ())
84
119
}
85
120
86
- htmlBody := t2html .Render (body )
87
-
88
- return string (htmlBody )
121
+ return string (body )
89
122
}
0 commit comments