@@ -144,17 +144,19 @@ func (r OtaStatusDetail) String() string {
144
144
return "No OTA found"
145
145
}
146
146
t := table .New ()
147
- hasErrorReason := r .Ota .ErrorReason != ""
148
147
149
- if hasErrorReason {
148
+ succeeded := strings .ToLower (r .Ota .Status ) == "succeeded"
149
+ hasError := r .Ota .ErrorReason != "" || ! succeeded
150
+
151
+ if hasError {
150
152
t .SetHeader ("Device ID" , "Ota ID" , "Status" , "Started At" , "Ended At" , "Error Reason" , "Retry Attempt" )
151
153
} else {
152
154
t .SetHeader ("Device ID" , "Ota ID" , "Status" , "Started At" , "Ended At" )
153
155
}
154
156
155
157
// Now print the table
156
158
line := []any {r .Ota .DeviceID , r .Ota .ID , r .Ota .MapStatus (), formatHumanReadableTs (r .Ota .StartedAt ), formatHumanReadableTs (r .Ota .EndedAt )}
157
- if hasErrorReason {
159
+ if hasError {
158
160
line = append (line , r .Ota .ErrorReason )
159
161
line = append (line , strconv .FormatInt (r .RetryAttempt , 10 ))
160
162
}
@@ -163,31 +165,22 @@ func (r OtaStatusDetail) String() string {
163
165
output := t .Render ()
164
166
165
167
// Add details
166
- containsFlashState := false
167
- firstTS := ""
168
168
if len (r .Details ) > 0 {
169
169
t = table .New ()
170
170
t .SetHeader ("Time" , "Status" , "Detail" )
171
171
fwSize := int64 (0 )
172
172
if r .FirmwareSize > 0 {
173
173
fwSize = r .FirmwareSize
174
174
}
175
- for _ , s := range r .Details {
176
- if upperCaseFirst (s .State ) == "Flash" {
177
- containsFlashState = true
178
- }
179
- if firstTS == "" {
180
- firstTS = formatHumanReadableTs (s .Timestamp )
181
- }
182
- }
183
- if ! containsFlashState && ! hasErrorReason {
175
+
176
+ firstTS := formatHumanReadableTs (r .Details [0 ].Timestamp )
177
+ if ! containsResetState (r .Details ) && ! hasError {
184
178
t .AddRow (firstTS , "Flash" , "" )
185
- if fwSize > 0 {
186
- t .AddRow (firstTS , "Fetch" , formatStateData ("fetch" , strconv .Itoa (int (fwSize )), fwSize , true ))
187
- }
188
179
}
180
+
181
+ hasReachedFlashState := hasReachedFlashState (r .Details , succeeded )
189
182
for _ , s := range r .Details {
190
- stateData := formatStateData (s .State , s .StateData , fwSize , hasReachedFlashState ( r . Details ) )
183
+ stateData := formatStateData (s .State , s .StateData , fwSize , hasReachedFlashState )
191
184
t .AddRow (formatHumanReadableTs (s .Timestamp ), upperCaseFirst (s .State ), stateData )
192
185
}
193
186
@@ -197,9 +190,16 @@ func (r OtaStatusDetail) String() string {
197
190
return output
198
191
}
199
192
200
- func hasReachedFlashState (states []State ) bool {
193
+ func hasReachedFlashState (states []State , succeeded bool ) bool {
194
+ if succeeded {
195
+ return true
196
+ }
197
+ return containsResetState (states )
198
+ }
199
+
200
+ func containsResetState (states []State ) bool {
201
201
for _ , s := range states {
202
- if s .State == "flash" || s .State == "reboot" {
202
+ if strings . ToLower ( s .State ) == "flash" || strings . ToLower ( s .State ) == "reboot" {
203
203
return true
204
204
}
205
205
}
0 commit comments