in example/ecr-push/progress.go [61:93]
func (j *pushjobs) status() []StatusInfo {
j.mu.Lock()
defer j.mu.Unlock()
statuses := make([]StatusInfo, 0, len(j.jobs))
for _, name := range j.ordered {
si := StatusInfo{
Ref: name,
}
status, err := j.tracker.GetStatus(name)
if err != nil {
si.Status = "waiting"
} else {
si.Offset = status.Offset
si.Total = status.Total
si.StartedAt = status.StartedAt
si.UpdatedAt = status.UpdatedAt
if status.Offset >= status.Total {
if status.UploadUUID == "" {
si.Status = "done"
} else {
si.Status = "committing"
}
} else {
si.Status = "uploading"
}
}
statuses = append(statuses, si)
}
return statuses
}