Skip to content

Commit 1149bf9

Browse files
authored
Show progress bar when downloading Docker images (#292)
1 parent 6a71df0 commit 1149bf9

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

cmd/src/campaigns_common.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,18 @@ func campaignsExecute(ctx context.Context, out *output.Output, svc *campaigns.Se
164164
}
165165
campaignsCompletePending(pending, "Resolving namespace")
166166

167+
imageProgress := out.Progress([]output.ProgressBar{{
168+
Label: "Preparing container images",
169+
Max: float64(len(campaignSpec.Steps)),
170+
}}, nil)
171+
err = svc.SetDockerImages(ctx, campaignSpec, func(step int) {
172+
imageProgress.SetValue(0, float64(step))
173+
})
174+
if err != nil {
175+
return "", "", err
176+
}
177+
imageProgress.Complete()
178+
167179
var progress output.Progress
168180
specs, err := svc.ExecuteCampaignSpec(ctx, executor, campaignSpec, func(statuses []*campaigns.TaskStatus) {
169181
if progress == nil {

internal/campaigns/service.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,19 +151,23 @@ func (svc *Service) NewExecutor(opts ExecutorOpts, update ExecutorUpdateCallback
151151
return newExecutor(opts, svc.client, update)
152152
}
153153

154-
func (svc *Service) ExecuteCampaignSpec(ctx context.Context, x Executor, spec *CampaignSpec, progress func([]*TaskStatus)) ([]*ChangesetSpec, error) {
155-
repos, err := svc.ResolveRepositories(ctx, spec)
156-
if err != nil {
157-
return nil, errors.Wrap(err, "resolving repositories")
158-
}
159-
160-
// TODO: status logging
154+
func (svc *Service) SetDockerImages(ctx context.Context, spec *CampaignSpec, progress func(i int)) error {
161155
for i, step := range spec.Steps {
162156
image, err := getDockerImageContentDigest(ctx, step.Container)
163157
if err != nil {
164-
return nil, errors.Wrapf(err, "step %d", i+1)
158+
return err
165159
}
166160
spec.Steps[i].image = image
161+
progress(i + 1)
162+
}
163+
164+
return nil
165+
}
166+
167+
func (svc *Service) ExecuteCampaignSpec(ctx context.Context, x Executor, spec *CampaignSpec, progress func([]*TaskStatus)) ([]*ChangesetSpec, error) {
168+
repos, err := svc.ResolveRepositories(ctx, spec)
169+
if err != nil {
170+
return nil, errors.Wrap(err, "resolving repositories")
167171
}
168172

169173
statuses := make([]*TaskStatus, 0, len(repos))

0 commit comments

Comments
 (0)