Skip to content

Commit 2cfc608

Browse files
committed
Add progressbar when downloading kic base image
1 parent dea7aff commit 2cfc608

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

Diff for: go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ replace (
108108
git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
109109
github.com/briandowns/spinner => github.com/alonyb/spinner v1.12.6
110110
github.com/docker/machine => github.com/machine-drivers/machine v0.7.1-0.20200824110434-7da9b61f0a42
111-
github.com/google/go-containerregistry => github.com/afbjorklund/go-containerregistry v0.1.2-0.20210306075852-e67a8ff8ae6f
111+
github.com/google/go-containerregistry => github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321082428-ecd05871b469
112112
github.com/samalba/dockerclient => github.com/sayboras/dockerclient v1.0.0
113113
k8s.io/api => k8s.io/api v0.17.3
114114
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.17.3

Diff for: go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21 h1:Pgxfz/g+Xy
9494
github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21/go.mod h1:Y8CJ3IwPIAkMhv/rRUWIlczaeqd9ty9yrl+nc2AbaL4=
9595
github.com/afbjorklund/go-containerregistry v0.1.2-0.20210306075852-e67a8ff8ae6f h1:TqV4eXL41kacdMcZz2wVkodIKMh4Ruc3rGLP5T/bRgQ=
9696
github.com/afbjorklund/go-containerregistry v0.1.2-0.20210306075852-e67a8ff8ae6f/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
97+
github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321082428-ecd05871b469 h1:Idy/v8PWwrQimq2QOwDyW4KOLJ25hgn+smqsXjRKJHM=
98+
github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321082428-ecd05871b469/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
9799
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
98100
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
99101
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=

Diff for: pkg/minikube/image/image.go

+34-4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"strings"
2828
"time"
2929

30+
"github.com/cheggaaa/pb/v3"
3031
"github.com/docker/docker/client"
3132
"github.com/google/go-containerregistry/pkg/authn"
3233
"github.com/google/go-containerregistry/pkg/name"
@@ -137,6 +138,9 @@ func Tag(img string) string {
137138

138139
// WriteImageToDaemon write img to the local docker daemon
139140
func WriteImageToDaemon(img string) error {
141+
// buffered channel
142+
c := make(chan v1.Update, 200)
143+
140144
klog.Infof("Writing %s to local daemon", img)
141145
ref, err := name.ParseReference(img)
142146
if err != nil {
@@ -156,12 +160,38 @@ func WriteImageToDaemon(img string) error {
156160
return errors.Wrap(err, "getting remote image")
157161
}
158162
klog.V(3).Infof("Writing image %v", ref)
159-
_, err = daemon.Write(ref, i)
160-
if err != nil {
161-
return errors.Wrap(err, "writing daemon image")
163+
errchan := make(chan error)
164+
p := pb.Full.Start64(0)
165+
fn := strings.Split(ref.Name(), "@")[0]
166+
// abbreviate filename for progress
167+
maxwidth := 30 - len("...")
168+
if len(fn) > maxwidth {
169+
fn = fn[0:maxwidth] + "..."
162170
}
171+
p.Set("prefix", " > "+fn+": ")
172+
p.Set(pb.Bytes, true)
163173

164-
return nil
174+
// Just a hair less than 80 (standard terminal width) for aesthetics & pasting into docs
175+
p.SetWidth(79)
176+
177+
go func() {
178+
_, err = daemon.Write(ref, i, tarball.WithProgress(c))
179+
errchan <- err
180+
}()
181+
var update v1.Update
182+
for {
183+
select {
184+
case update = <-c:
185+
p.SetCurrent(update.Complete)
186+
p.SetTotal(update.Total)
187+
case err = <-errchan:
188+
p.Finish()
189+
if err != nil {
190+
return errors.Wrap(err, "writing daemon image")
191+
}
192+
return nil
193+
}
194+
}
165195
}
166196

167197
func retrieveImage(ref name.Reference) (v1.Image, error) {

0 commit comments

Comments
 (0)