提交 05d35d19 作者: Jeromy Johnson 提交者: GitHub

Merge pull request #3770 from ipfs/feat/add/superquiet

Add ipfs add --quieter
...@@ -26,6 +26,7 @@ var ErrDepthLimitExceeded = fmt.Errorf("depth limit exceeded") ...@@ -26,6 +26,7 @@ var ErrDepthLimitExceeded = fmt.Errorf("depth limit exceeded")
const ( const (
quietOptionName = "quiet" quietOptionName = "quiet"
quieterOptionName = "quieter"
silentOptionName = "silent" silentOptionName = "silent"
progressOptionName = "progress" progressOptionName = "progress"
trickleOptionName = "trickle" trickleOptionName = "trickle"
...@@ -73,6 +74,7 @@ You can now refer to the added file in a gateway, like so: ...@@ -73,6 +74,7 @@ You can now refer to the added file in a gateway, like so:
Options: []cmds.Option{ Options: []cmds.Option{
cmds.OptionRecursivePath, // a builtin option that allows recursive paths (-r, --recursive) cmds.OptionRecursivePath, // a builtin option that allows recursive paths (-r, --recursive)
cmds.BoolOption(quietOptionName, "q", "Write minimal output."), cmds.BoolOption(quietOptionName, "q", "Write minimal output."),
cmds.BoolOption(quieterOptionName, "Q", "Write only final hash."),
cmds.BoolOption(silentOptionName, "Write no output."), cmds.BoolOption(silentOptionName, "Write no output."),
cmds.BoolOption(progressOptionName, "p", "Stream progress data."), cmds.BoolOption(progressOptionName, "p", "Stream progress data."),
cmds.BoolOption(trickleOptionName, "t", "Use trickle-dag format for dag generation."), cmds.BoolOption(trickleOptionName, "t", "Use trickle-dag format for dag generation."),
...@@ -87,6 +89,9 @@ You can now refer to the added file in a gateway, like so: ...@@ -87,6 +89,9 @@ You can now refer to the added file in a gateway, like so:
}, },
PreRun: func(req cmds.Request) error { PreRun: func(req cmds.Request) error {
quiet, _, _ := req.Option(quietOptionName).Bool() quiet, _, _ := req.Option(quietOptionName).Bool()
quieter, _, _ := req.Option(quieterOptionName).Bool()
quiet = quiet || quieter
silent, _, _ := req.Option(silentOptionName).Bool() silent, _, _ := req.Option(silentOptionName).Bool()
if quiet || silent { if quiet || silent {
...@@ -278,17 +283,11 @@ You can now refer to the added file in a gateway, like so: ...@@ -278,17 +283,11 @@ You can now refer to the added file in a gateway, like so:
} }
res.SetOutput(nil) res.SetOutput(nil)
quiet, _, err := req.Option("quiet").Bool() quiet, _, _ := req.Option(quietOptionName).Bool()
if err != nil { quieter, _, _ := req.Option(quieterOptionName).Bool()
res.SetError(u.ErrCast(), cmds.ErrNormal) quiet = quiet || quieter
return
}
progress, _, err := req.Option(progressOptionName).Bool() progress, _, _ := req.Option(progressOptionName).Bool()
if err != nil {
res.SetError(u.ErrCast(), cmds.ErrNormal)
return
}
var bar *pb.ProgressBar var bar *pb.ProgressBar
if progress { if progress {
...@@ -307,6 +306,7 @@ You can now refer to the added file in a gateway, like so: ...@@ -307,6 +306,7 @@ You can now refer to the added file in a gateway, like so:
} }
lastFile := "" lastFile := ""
lastHash := ""
var totalProgress, prevFiles, lastBytes int64 var totalProgress, prevFiles, lastBytes int64
LOOP: LOOP:
...@@ -314,10 +314,18 @@ You can now refer to the added file in a gateway, like so: ...@@ -314,10 +314,18 @@ You can now refer to the added file in a gateway, like so:
select { select {
case out, ok := <-outChan: case out, ok := <-outChan:
if !ok { if !ok {
if quieter {
fmt.Fprintln(res.Stdout(), lastHash)
}
break LOOP break LOOP
} }
output := out.(*coreunix.AddedObject) output := out.(*coreunix.AddedObject)
if len(output.Hash) > 0 { if len(output.Hash) > 0 {
lastHash = output.Hash
if quieter {
continue
}
if progress { if progress {
// clear progress bar line before we print "added x" output // clear progress bar line before we print "added x" output
fmt.Fprintf(res.Stderr(), "\033[2K\r") fmt.Fprintf(res.Stderr(), "\033[2K\r")
...@@ -327,7 +335,6 @@ You can now refer to the added file in a gateway, like so: ...@@ -327,7 +335,6 @@ You can now refer to the added file in a gateway, like so:
} else { } else {
fmt.Fprintf(res.Stdout(), "added %s %s\n", output.Hash, output.Name) fmt.Fprintf(res.Stdout(), "added %s %s\n", output.Hash, output.Name)
} }
} else { } else {
log.Debugf("add progress: %v %v\n", output.Name, output.Bytes) log.Debugf("add progress: %v %v\n", output.Name, output.Bytes)
......
...@@ -367,6 +367,15 @@ add_directory() { ...@@ -367,6 +367,15 @@ add_directory() {
test_cmp expected actual test_cmp expected actual
' '
test_expect_success "ipfs add --quieter succeeds" '
ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
'
test_expect_success "ipfs add --quieter returns only one correct hash" '
echo "$PLANETS" > expected &&
test_cmp expected actual
'
test_expect_success "cleanup" ' test_expect_success "cleanup" '
rm -r mountdir/planets rm -r mountdir/planets
' '
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论