-
Notifications
You must be signed in to change notification settings - Fork 18
/
summary_severity_row.go
68 lines (59 loc) · 1.7 KB
/
summary_severity_row.go
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
57
58
59
60
61
62
63
64
65
66
67
68
package controldisplay
import (
"fmt"
"strings"
"github.com/turbot/go-kit/helpers"
"github.com/turbot/powerpipe/internal/controlexecute"
)
type SummarySeverityRowRenderer struct {
resultTree *controlexecute.ExecutionTree
width int
severity string
}
func NewSummarySeverityRowRenderer(resultTree *controlexecute.ExecutionTree, width int, severity string) *SummarySeverityRowRenderer {
return &SummarySeverityRowRenderer{
resultTree: resultTree,
width: width,
severity: severity,
}
}
func (r *SummarySeverityRowRenderer) Render() string {
severitySummary, exists := r.resultTree.Root.Summary.Severity[r.severity]
// if there are no items for this severity level, return empty string
if !exists {
return ""
}
colorFunc := ControlColors.Severity
severityStr := fmt.Sprintf("%s ", colorFunc(strings.ToUpper(r.severity)))
count := NewCounterRenderer(
severitySummary.FailedCount(),
severitySummary.TotalCount(),
r.resultTree.Root.Summary.Status.FailedCount(),
r.resultTree.Root.Summary.Status.TotalCount(),
CounterRendererOptions{
AddLeadingSpace: false,
},
).Render()
graph := NewCounterGraphRenderer(
severitySummary.FailedCount(),
severitySummary.TotalCount(),
r.resultTree.Root.Summary.Status.TotalCount(),
CounterGraphRendererOptions{
FailedColorFunc: ControlColors.CountGraphFail,
},
).Render()
spaceAvailable := r.width - (helpers.PrintableLength(severityStr) + helpers.PrintableLength(count) + helpers.PrintableLength(graph))
space := ""
if r.severity == "critical" {
space = NewSpacerRenderer(4).Render()
} else {
space = NewSpacerRenderer(spaceAvailable).Render()
}
return fmt.Sprintf(
"%s%s%s%s",
severityStr,
space,
count,
graph,
)
}