fix progress bar in ipfs get
License: MIT Signed-off-by: Jeromy <why@ipfs.io>
Jeromy committed
Jul 6, 2016 at 15:42 UTC
43cd49dcb432f419fdd991ea0f6e2e8480c3ae45
1 file changed
+12
-2
core/commands/get.go
+12
-2
@@ -69,6 +69,14 @@ may also specify the level of compression by specifying '-l=<1-9>'.
69
return
70
}
71
72
+ size, err := dn.Size()
73
+ if err != nil {
74
+ res.SetError(err, cmds.ErrNormal)
75
+ return
76
+ }
77
+
78
+ res.SetLength(size)
79
+
80
archive, _, _ := req.Option("archive").Bool()
81
reader, err := uarchive.DagArchive(ctx, dn, p.String(), node.DAG, archive, cmplvl)
82
if err != nil {
@@ -103,6 +111,7 @@ may also specify the level of compression by specifying '-l=<1-9>'.
111
Err: os.Stderr,
112
Archive: archive,
113
Compression: cmplvl,
114
+ Size: int64(res.Length()),
115
}
116
117
if err := gw.Write(outReader, outPath); err != nil {
@@ -149,6 +158,7 @@ type getWriter struct {
158
159
Archive bool
160
Compression int
161
+ Size int64
162
}
163
164
func (gw *getWriter) Write(r io.Reader, fpath string) error {
@@ -181,7 +191,7 @@ func (gw *getWriter) writeArchive(r io.Reader, fpath string) error {
191
defer file.Close()
192
193
fmt.Fprintf(gw.Out, "Saving archive to %s\n", fpath)
184
- bar, barR := progressBarForReader(gw.Err, r, 0)
194
+ bar, barR := progressBarForReader(gw.Err, r, gw.Size)
195
bar.Start()
196
defer bar.Finish()
197
@@ -191,7 +201,7 @@ func (gw *getWriter) writeArchive(r io.Reader, fpath string) error {
201
202
func (gw *getWriter) writeExtracted(r io.Reader, fpath string) error {
203
fmt.Fprintf(gw.Out, "Saving file(s) to %s\n", fpath)
194
- bar, barR := progressBarForReader(gw.Err, r, 0)
204
+ bar, barR := progressBarForReader(gw.Err, r, gw.Size)
205
bar.Start()
206
defer bar.Finish()
207