Skip to content

Commit 84541d0

Browse files
authored
Merge pull request #1515 from afbjorklund/compress-progress
Add progress bar for decompressing
2 parents 363cda2 + 58a06d6 commit 84541d0

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

pkg/downloader/downloader.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -284,12 +284,10 @@ func copyLocal(dst, src, ext string, decompress bool, description string, expect
284284
if err != nil {
285285
return err
286286
}
287-
if description != "" {
288-
// TODO: progress bar for copy
289-
}
290287
if _, ok := Decompressor(ext); ok && decompress {
291-
return decompressLocal(dstPath, srcPath, ext)
288+
return decompressLocal(dstPath, srcPath, ext, description)
292289
}
290+
// TODO: progress bar for copy
293291
return fs.CopyFile(dstPath, srcPath)
294292
}
295293

@@ -311,12 +309,22 @@ func Decompressor(ext string) ([]string, bool) {
311309
return []string{program, "-d"}, true
312310
}
313311

314-
func decompressLocal(dst, src, ext string) error {
312+
func decompressLocal(dst, src, ext string, description string) error {
315313
command, found := Decompressor(ext)
316314
if !found {
317315
return fmt.Errorf("decompressLocal: unknown extension %s", ext)
318316
}
319317
logrus.Infof("decompressing %s with %v", ext, command)
318+
319+
st, err := os.Stat(src)
320+
if err != nil {
321+
return err
322+
}
323+
bar, err := createBar(st.Size())
324+
if err != nil {
325+
return err
326+
}
327+
320328
in, err := os.Open(src)
321329
if err != nil {
322330
return err
@@ -329,15 +337,23 @@ func decompressLocal(dst, src, ext string) error {
329337
defer out.Close()
330338
buf := new(bytes.Buffer)
331339
cmd := exec.Command(command[0], command[1:]...)
332-
cmd.Stdin = in
340+
cmd.Stdin = bar.NewProxyReader(in)
333341
cmd.Stdout = out
334342
cmd.Stderr = buf
343+
if !HideProgress {
344+
if description == "" {
345+
description = filepath.Base(src)
346+
}
347+
fmt.Printf("Decompressing %s\n", description)
348+
}
349+
bar.Start()
335350
err = cmd.Run()
336351
if err != nil {
337352
if ee, ok := err.(*exec.ExitError); ok {
338353
ee.Stderr = buf.Bytes()
339354
}
340355
}
356+
bar.Finish()
341357
return err
342358
}
343359

0 commit comments

Comments
 (0)