From 6f796dc272a624bcd8e196658c4b244e308a2a9d Mon Sep 17 00:00:00 2001 From: Richard Littauer Date: Tue, 10 May 2016 17:12:54 -0400 Subject: [PATCH 1/2] Add Defaults to `ipfs add` I didn't bother with Chunker, because I think that is a much wider PR. These should all be solid, though. Redid some of the logic to make it smoother. Part of #2484. License: MIT Signed-off-by: Richard Littauer --- core/commands/add.go | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/core/commands/add.go b/core/commands/add.go index 8f1dd976435..764541874ae 100644 --- a/core/commands/add.go +++ b/core/commands/add.go @@ -30,9 +30,11 @@ const ( var AddCmd = &cmds.Command{ Helptext: cmds.HelpText{ - Tagline: "Add a file or directory to ipfs.", + Tagline: "Add a file to ipfs.", ShortDescription: ` -Adds contents of to ipfs. Use -r to add directories (recursively). +Adds contents of to ipfs. Use -r to add directories. +Note that directories are added recursively, to form the ipfs +MerkleDAG. `, LongDescription: ` Adds contents of to ipfs. Use -r to add directories. @@ -61,29 +63,21 @@ You can now refer to the added file in a gateway, like so: }, Options: []cmds.Option{ cmds.OptionRecursivePath, // a builtin option that allows recursive paths (-r, --recursive) - cmds.BoolOption(quietOptionName, "q", "Write minimal output."), - cmds.BoolOption(silentOptionName, "Write no output."), - cmds.BoolOption(progressOptionName, "p", "Stream progress data."), - cmds.BoolOption(trickleOptionName, "t", "Use trickle-dag format for dag generation."), - cmds.BoolOption(onlyHashOptionName, "n", "Only chunk and hash - do not write to disk."), - cmds.BoolOption(wrapOptionName, "w", "Wrap files with a directory object."), - cmds.BoolOption(hiddenOptionName, "H", "Include files that are hidden. Only takes effect on recursive add."), + cmds.BoolOption(quietOptionName, "q", "Write minimal output.").Default(false), + cmds.BoolOption(silentOptionName, "Write no output.").Default(false), + cmds.BoolOption(progressOptionName, "p", "Stream progress data.").Default(true), + cmds.BoolOption(trickleOptionName, "t", "Use trickle-dag format for dag generation.").Default(false), + cmds.BoolOption(onlyHashOptionName, "n", "Only chunk and hash - do not write to disk.").Default(false), + cmds.BoolOption(wrapOptionName, "w", "Wrap files with a directory object.").Default(false), + cmds.BoolOption(hiddenOptionName, "H", "Include files that are hidden. Only takes effect on recursive add.").Default(false), cmds.StringOption(chunkerOptionName, "s", "Chunking algorithm to use."), - cmds.BoolOption(pinOptionName, "Pin this object when adding. Default: true."), + cmds.BoolOption(pinOptionName, "Pin this object when adding.").Default(true), }, PreRun: func(req cmds.Request) error { if quiet, _, _ := req.Option(quietOptionName).Bool(); quiet { return nil } - // ipfs cli progress bar defaults to true - progress, found, _ := req.Option(progressOptionName).Bool() - if !found { - progress = true - } - - req.SetOption(progressOptionName, progress) - sizeFile, ok := req.Files().(files.SizeFile) if !ok { // we don't need to error, the progress bar just won't know how big the files are @@ -129,11 +123,7 @@ You can now refer to the added file in a gateway, like so: hidden, _, _ := req.Option(hiddenOptionName).Bool() silent, _, _ := req.Option(silentOptionName).Bool() chunker, _, _ := req.Option(chunkerOptionName).String() - dopin, pin_found, _ := req.Option(pinOptionName).Bool() - - if !pin_found { // default - dopin = true - } + dopin, _, _ := req.Option(pinOptionName).Bool() if hash { nilnode, err := core.NewNode(n.Context(), &core.BuildCfg{ @@ -220,7 +210,7 @@ You can now refer to the added file in a gateway, like so: return } - progress, prgFound, err := req.Option(progressOptionName).Bool() + progress, _, err := req.Option(progressOptionName).Bool() if err != nil { res.SetError(u.ErrCast(), cmds.ErrNormal) return @@ -233,9 +223,7 @@ You can now refer to the added file in a gateway, like so: } var showProgressBar bool - if prgFound { - showProgressBar = progress - } else if !quiet && !silent { + if !progress && !quiet && !silent { showProgressBar = true } From 03dd669430474ae8396e6fe9eba9e47f01c0ed75 Mon Sep 17 00:00:00 2001 From: Richard Littauer Date: Sat, 21 May 2016 12:37:14 +0100 Subject: [PATCH 2/2] Refactor progress and showProgressBar License: MIT Signed-off-by: Richard Littauer --- core/commands/add.go | 15 +++++++-------- test/sharness/t0040-add-and-cat.sh | 8 +++++--- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/core/commands/add.go b/core/commands/add.go index 764541874ae..b0a31c0644b 100644 --- a/core/commands/add.go +++ b/core/commands/add.go @@ -222,14 +222,13 @@ You can now refer to the added file in a gateway, like so: return } - var showProgressBar bool - if !progress && !quiet && !silent { - showProgressBar = true + if !quiet && !silent { + progress = true } var bar *pb.ProgressBar var terminalWidth int - if showProgressBar { + if progress { bar = pb.New64(0).SetUnits(pb.U_BYTES) bar.ManualUpdate = true bar.Start() @@ -264,7 +263,7 @@ You can now refer to the added file in a gateway, like so: } output := out.(*coreunix.AddedObject) if len(output.Hash) > 0 { - if showProgressBar { + if progress { // clear progress bar line before we print "added x" output fmt.Fprintf(res.Stderr(), "\033[2K\r") } @@ -277,7 +276,7 @@ You can now refer to the added file in a gateway, like so: } else { log.Debugf("add progress: %v %v\n", output.Name, output.Bytes) - if !showProgressBar { + if !progress { continue } @@ -293,11 +292,11 @@ You can now refer to the added file in a gateway, like so: totalProgress = bar.Add64(delta) } - if showProgressBar { + if progress { bar.Update() } case size := <-sizeChan: - if showProgressBar { + if progress { bar.Total = size bar.ShowPercent = true bar.ShowBar = true diff --git a/test/sharness/t0040-add-and-cat.sh b/test/sharness/t0040-add-and-cat.sh index a37c605e752..f9e1de2a1fe 100755 --- a/test/sharness/t0040-add-and-cat.sh +++ b/test/sharness/t0040-add-and-cat.sh @@ -11,9 +11,11 @@ test_description="Test add and cat commands" client_err_add() { printf "$@\n\n" echo 'USAGE - ipfs add ... - Add a file or directory to ipfs. + ipfs add ... - Add a file to ipfs. - Adds contents of to ipfs. Use -r to add directories (recursively). + Adds contents of to ipfs. Use -r to add directories. + Note that directories are added recursively, to form the ipfs + MerkleDAG. Use '"'"'ipfs add --help'"'"' for more information about this command. ' @@ -360,7 +362,7 @@ test_add_cat_5MB test_add_cat_expensive -test_add_named_pipe " Post http://$API_ADDR/api/v0/add?encoding=json&progress=true&r=true&stream-channels=true:" +test_add_named_pipe " Post http://$API_ADDR/api/v0/add?encoding=json&r=true&stream-channels=true:" test_kill_ipfs_daemon