mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-29 17:36:38 +08:00
Merge pull request #1516 from rht/progressbar
Clear progress bar on `ipfs cat` exit
This commit is contained in:
@ -4,7 +4,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/cheggaaa/pb"
|
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/cheggaaa/pb"
|
||||||
|
|
||||||
@ -208,7 +207,7 @@ remains to be implemented.
|
|||||||
if len(output.Hash) > 0 {
|
if len(output.Hash) > 0 {
|
||||||
if showProgressBar {
|
if showProgressBar {
|
||||||
// clear progress bar line before we print "added x" output
|
// clear progress bar line before we print "added x" output
|
||||||
fmt.Fprintf(res.Stderr(), "\r%s\r", strings.Repeat(" ", terminalWidth))
|
fmt.Fprintf(res.Stderr(), "\033[2K\r")
|
||||||
}
|
}
|
||||||
if quiet {
|
if quiet {
|
||||||
fmt.Fprintf(res.Stdout(), "%s\n", output.Hash)
|
fmt.Fprintf(res.Stdout(), "%s\n", output.Hash)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package commands
|
package commands
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
cmds "github.com/ipfs/go-ipfs/commands"
|
cmds "github.com/ipfs/go-ipfs/commands"
|
||||||
@ -14,6 +15,11 @@ import (
|
|||||||
|
|
||||||
const progressBarMinSize = 1024 * 1024 * 8 // show progress bar for outputs > 8MiB
|
const progressBarMinSize = 1024 * 1024 * 8 // show progress bar for outputs > 8MiB
|
||||||
|
|
||||||
|
type clearlineReader struct {
|
||||||
|
io.Reader
|
||||||
|
out io.Writer
|
||||||
|
}
|
||||||
|
|
||||||
var CatCmd = &cmds.Command{
|
var CatCmd = &cmds.Command{
|
||||||
Helptext: cmds.HelpText{
|
Helptext: cmds.HelpText{
|
||||||
Tagline: "Show IPFS object data",
|
Tagline: "Show IPFS object data",
|
||||||
@ -54,7 +60,7 @@ it contains.
|
|||||||
bar.Start()
|
bar.Start()
|
||||||
|
|
||||||
reader := bar.NewProxyReader(res.Output().(io.Reader))
|
reader := bar.NewProxyReader(res.Output().(io.Reader))
|
||||||
res.SetOutput(reader)
|
res.SetOutput(&clearlineReader{reader, res.Stderr()})
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,3 +82,11 @@ func cat(ctx context.Context, node *core.IpfsNode, paths []string) ([]io.Reader,
|
|||||||
}
|
}
|
||||||
return readers, length, nil
|
return readers, length, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *clearlineReader) Read(p []byte) (n int, err error) {
|
||||||
|
n, err = r.Reader.Read(p)
|
||||||
|
if err == io.EOF {
|
||||||
|
fmt.Fprintf(r.out, "\033[2K\r") // clear progress bar line on EOF
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user