func()

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
}