@@ -133,14 +133,22 @@ func renderTable(fr *bincapz.FileReport, w io.Writer, rc tableConfig) {
133133 tWidth := terminalWidth ()
134134 keyWidth := 36
135135 riskWidth := 7
136- padding := 7
137- descWidth := tWidth - keyWidth - riskWidth - padding
136+ padding := 4
137+ maxKeyLen := 0
138+
139+ for _ , k := range kbs {
140+ key := forceWrap (k .Key , keyWidth )
141+ if len (key ) > maxKeyLen {
142+ maxKeyLen = len (key )
143+ }
144+ }
145+
146+ descWidth := tWidth - maxKeyLen - riskWidth - padding
138147 if descWidth > 120 {
139148 descWidth = 120
140149 }
141150
142151 klog .Infof ("terminal width: %d - desc width: %d" , tWidth , descWidth )
143- maxKeyLen := 0
144152
145153 for _ , k := range kbs {
146154 desc := k .Behavior .Description
@@ -155,6 +163,8 @@ func renderTable(fr *bincapz.FileReport, w io.Writer, rc tableConfig) {
155163 desc = fmt .Sprintf ("by %s" , k .Behavior .RuleAuthor )
156164 }
157165 }
166+
167+ key := forceWrap (k .Key , keyWidth )
158168 words , _ := tablewriter .WrapString (desc , descWidth )
159169
160170 // klog.Infof("%s / %s - %s", k.Key, desc, k.Behavior.)
@@ -171,11 +181,6 @@ func renderTable(fr *bincapz.FileReport, w io.Writer, rc tableConfig) {
171181 desc = fmt .Sprintf ("%s:%s%s%s" , desc , before , forceWrap (strings .Join (k .Behavior .Values , "\n " ), descWidth ), after )
172182 }
173183
174- key := forceWrap (k .Key , keyWidth )
175- if len (key ) > maxKeyLen {
176- maxKeyLen = len (key )
177- }
178-
179184 // lowercase first character for consistency
180185 desc = strings .ToLower (string (desc [0 ])) + desc [1 :]
181186 risk := fmt .Sprintf ("%d/%s" , k .Behavior .RiskScore , k .Behavior .RiskLevel )
@@ -191,14 +196,31 @@ func renderTable(fr *bincapz.FileReport, w io.Writer, rc tableConfig) {
191196
192197 if title != "" {
193198 fmt .Fprintf (w , "%s\n " , title )
194- fmt .Fprintf (w , "%s\n " , strings .Repeat ("-" , 70 ))
195199 }
196200
197201 table := tablewriter .NewWriter (os .Stdout )
198202 table .SetAutoWrapText (false )
199203 // table.SetHeader([]string{"Risk", "Key", "Description"})
200204 table .SetBorder (false )
201- // ttable.SetBorders(tablewriter.Border{Left: false, Top: true, Right: false, Bottom: false})
205+ table .SetCenterSeparator ("" )
206+ // SetBorders miscalculates length with NoWhiteSpace
207+ //table.SetBorders(tablewriter.Border{Left: false, Top: true, Right: false, Bottom: false})
208+ maxDescWidth := 0
209+ maxRiskWidth := 0
210+ for _ , d := range data {
211+ if len (d [0 ]) > maxRiskWidth {
212+ maxRiskWidth = len (d [0 ])
213+ }
214+ for _ , l := range strings .Split (d [2 ], "\n " ) {
215+ if len (l ) > maxDescWidth {
216+ maxDescWidth = len (l )
217+ }
218+ }
219+
220+ }
221+ tableWidth := maxKeyLen + maxDescWidth + padding + maxRiskWidth
222+ klog .Infof ("table width: %d" , tableWidth )
223+ fmt .Fprintf (w , "%s\n " , strings .Repeat ("-" , tableWidth ))
202224 table .SetNoWhiteSpace (true )
203225 table .SetTablePadding (" " )
204226 descColor := tablewriter .Normal
0 commit comments