github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/control/controldisplay/summary_severity_row.go (about) 1 package controldisplay 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/turbot/go-kit/helpers" 8 "github.com/turbot/steampipe/pkg/control/controlexecute" 9 ) 10 11 type SummarySeverityRowRenderer struct { 12 resultTree *controlexecute.ExecutionTree 13 width int 14 severity string 15 } 16 17 func NewSummarySeverityRowRenderer(resultTree *controlexecute.ExecutionTree, width int, severity string) *SummarySeverityRowRenderer { 18 return &SummarySeverityRowRenderer{ 19 resultTree: resultTree, 20 width: width, 21 severity: severity, 22 } 23 } 24 25 func (r *SummarySeverityRowRenderer) Render() string { 26 severitySummary, exists := r.resultTree.Root.Summary.Severity[r.severity] 27 // if there are no items for this severity level, return empty string 28 if !exists { 29 return "" 30 } 31 colorFunc := ControlColors.Severity 32 severityStr := fmt.Sprintf("%s ", colorFunc(strings.ToUpper(r.severity))) 33 34 count := NewCounterRenderer( 35 severitySummary.FailedCount(), 36 severitySummary.TotalCount(), 37 r.resultTree.Root.Summary.Status.FailedCount(), 38 r.resultTree.Root.Summary.Status.TotalCount(), 39 CounterRendererOptions{ 40 AddLeadingSpace: false, 41 }, 42 ).Render() 43 44 graph := NewCounterGraphRenderer( 45 severitySummary.FailedCount(), 46 severitySummary.TotalCount(), 47 r.resultTree.Root.Summary.Status.TotalCount(), 48 CounterGraphRendererOptions{ 49 FailedColorFunc: ControlColors.CountGraphFail, 50 }, 51 ).Render() 52 53 spaceAvailable := r.width - (helpers.PrintableLength(severityStr) + helpers.PrintableLength(count) + helpers.PrintableLength(graph)) 54 space := "" 55 if r.severity == "critical" { 56 space = NewSpacerRenderer(4).Render() 57 } else { 58 space = NewSpacerRenderer(spaceAvailable).Render() 59 } 60 61 return fmt.Sprintf( 62 "%s%s%s%s", 63 severityStr, 64 space, 65 count, 66 graph, 67 ) 68 }