@@ -89,19 +89,21 @@ func checksRun(opts *ChecksOptions) error {
8989 pending := 0
9090
9191 type output struct {
92- mark string
93- bucket string
94- name string
95- elapsed string
96- link string
92+ mark string
93+ bucket string
94+ name string
95+ elapsed string
96+ link string
97+ markColor func (string ) string
9798 }
9899
99100 outputs := []output {}
100101
101102 for _ , c := range pr .Commits .Nodes [0 ].Commit .StatusCheckRollup .Contexts .Nodes {
102- mark := ""
103- bucket := ""
103+ mark := "✓ "
104+ bucket := "pass "
104105 state := c .State
106+ markColor := utils .Green
105107 if state == "" {
106108 if c .Status == "COMPLETED" {
107109 state = c .Conclusion
@@ -111,15 +113,15 @@ func checksRun(opts *ChecksOptions) error {
111113 }
112114 switch state {
113115 case "SUCCESS" , "NEUTRAL" , "SKIPPED" :
114- mark = utils .GreenCheck ()
115116 passing ++
116- bucket = "pass"
117117 case "ERROR" , "FAILURE" , "CANCELLED" , "TIMED_OUT" , "ACTION_REQUIRED" :
118- mark = utils .RedX ()
118+ mark = "X"
119+ markColor = utils .Red
119120 failing ++
120121 bucket = "fail"
121122 case "EXPECTED" , "REQUESTED" , "QUEUED" , "PENDING" , "IN_PROGRESS" , "STALE" :
122- mark = utils .YellowDash ()
123+ mark = "-"
124+ markColor = utils .Yellow
123125 pending ++
124126 bucket = "pending"
125127 default :
@@ -146,28 +148,33 @@ func checksRun(opts *ChecksOptions) error {
146148 name = c .Context
147149 }
148150
149- outputs = append (outputs , output {mark , bucket , name , elapsed , link })
151+ outputs = append (outputs , output {mark , bucket , name , elapsed , link , markColor })
150152 }
151153
152154 sort .Slice (outputs , func (i , j int ) bool {
153- if outputs [i ].bucket == outputs [j ].bucket {
154- return outputs [i ].name < outputs [j ].name
155- } else {
156- if outputs [i ].bucket == "fail" {
157- return true
158- } else if outputs [i ].bucket == "pending" && outputs [j ].bucket == "success" {
159- return true
155+ b0 := outputs [i ].bucket
156+ n0 := outputs [i ].name
157+ l0 := outputs [i ].link
158+ b1 := outputs [j ].bucket
159+ n1 := outputs [j ].name
160+ l1 := outputs [j ].link
161+
162+ if b0 == b1 {
163+ if n0 == n1 {
164+ return l0 < l1
165+ } else {
166+ return n0 < n1
160167 }
161168 }
162169
163- return false
170+ return ( b0 == "fail" ) || ( b0 == "pending" && b1 == "success" )
164171 })
165172
166173 tp := utils .NewTablePrinter (opts .IO )
167174
168175 for _ , o := range outputs {
169176 if opts .IO .IsStdoutTTY () {
170- tp .AddField (o .mark , nil , nil )
177+ tp .AddField (o .mark , nil , o . markColor )
171178 tp .AddField (o .name , nil , nil )
172179 tp .AddField (o .elapsed , nil , nil )
173180 tp .AddField (o .link , nil , nil )
@@ -207,5 +214,14 @@ func checksRun(opts *ChecksOptions) error {
207214 fmt .Fprintln (opts .IO .Out )
208215 }
209216
210- return tp .Render ()
217+ err = tp .Render ()
218+ if err != nil {
219+ return err
220+ }
221+
222+ if failing + pending > 0 {
223+ return cmdutil .SilentError
224+ }
225+
226+ return nil
211227}
0 commit comments