From f08c88c8bb37ecd2689294d261713d2789fae2b2 Mon Sep 17 00:00:00 2001
From: Jeromy <jeromyj@gmail.com>
Date: Mon, 7 Dec 2015 22:19:29 -0800
Subject: [PATCH] feedback from CR

License: MIT
Signed-off-by: Jeromy <jeromyj@gmail.com>
---
 core/commands/add.go        |  8 +++-
 core/coreunix/add.go        | 89 ++++++++++++++++++-------------------
 test/sharness/t0080-repo.sh |  5 +++
 3 files changed, 56 insertions(+), 46 deletions(-)

diff --git a/core/commands/add.go b/core/commands/add.go
index ef7c9748a..152244be7 100644
--- a/core/commands/add.go
+++ b/core/commands/add.go
@@ -213,10 +213,16 @@ remains to be implemented.
 			return
 		}
 
+		silent, _, err := req.Option(silentOptionName).Bool()
+		if err != nil {
+			res.SetError(u.ErrCast(), cmds.ErrNormal)
+			return
+		}
+
 		var showProgressBar bool
 		if prgFound {
 			showProgressBar = progress
-		} else if !quiet {
+		} else if !quiet && !silent {
 			showProgressBar = true
 		}
 
diff --git a/core/coreunix/add.go b/core/coreunix/add.go
index 64bb6ad30..bd6e4f745 100644
--- a/core/coreunix/add.go
+++ b/core/coreunix/add.go
@@ -105,97 +105,96 @@ type Adder struct {
 }
 
 // Perform the actual add & pin locally, outputting results to reader
-func (params Adder) add(reader io.Reader) (*dag.Node, error) {
-	chnk, err := chunk.FromString(reader, params.Chunker)
+func (adder Adder) add(reader io.Reader) (*dag.Node, error) {
+	chnk, err := chunk.FromString(reader, adder.Chunker)
 	if err != nil {
 		return nil, err
 	}
 
-	if params.Trickle {
+	if adder.Trickle {
 		return importer.BuildTrickleDagFromReader(
-			params.node.DAG,
+			adder.node.DAG,
 			chnk,
 		)
 	}
 	return importer.BuildDagFromReader(
-		params.node.DAG,
+		adder.node.DAG,
 		chnk,
 	)
 }
 
-func (params *Adder) RootNode() (*dag.Node, error) {
+func (adder *Adder) RootNode() (*dag.Node, error) {
 	// for memoizing
-	if params.root != nil {
-		return params.root, nil
+	if adder.root != nil {
+		return adder.root, nil
 	}
 
-	root, err := params.mr.GetValue().GetNode()
+	root, err := adder.mr.GetValue().GetNode()
 	if err != nil {
 		return nil, err
 	}
 
 	// if not wrapping, AND one root file, use that hash as root.
-	if !params.Wrap && len(root.Links) == 1 {
-		root, err = root.Links[0].GetNode(params.ctx, params.node.DAG)
+	if !adder.Wrap && len(root.Links) == 1 {
+		root, err = root.Links[0].GetNode(adder.ctx, adder.node.DAG)
 		if err != nil {
 			return nil, err
 		}
 	}
 
-	params.root = root
+	adder.root = root
 	return root, err
 }
 
-func (params *Adder) PinRoot() error {
-	root, err := params.RootNode()
+func (adder *Adder) PinRoot() error {
+	root, err := adder.RootNode()
 	if err != nil {
 		return err
 	}
-	if !params.Pin {
+	if !adder.Pin {
 		return nil
 	}
 
-	rnk, err := params.node.DAG.Add(root)
+	rnk, err := adder.node.DAG.Add(root)
 	if err != nil {
 		return err
 	}
 
-	if params.tempRoot != "" {
-		err := params.node.Pinning.Unpin(params.ctx, params.tempRoot, true)
+	if adder.tempRoot != "" {
+		err := adder.node.Pinning.Unpin(adder.ctx, adder.tempRoot, true)
 		if err != nil {
 			return err
 		}
-		params.tempRoot = rnk
+		adder.tempRoot = rnk
 	}
 
-	params.node.Pinning.PinWithMode(rnk, pin.Recursive)
-	return params.node.Pinning.Flush()
+	adder.node.Pinning.PinWithMode(rnk, pin.Recursive)
+	return adder.node.Pinning.Flush()
 }
 
-func (params *Adder) Finalize() (*dag.Node, error) {
-	root, err := params.mr.GetValue().GetNode()
+func (adder *Adder) Finalize() (*dag.Node, error) {
+	// cant just call adder.RootNode() here as we need the name for printing
+	root, err := adder.mr.GetValue().GetNode()
 	if err != nil {
 		return nil, err
 	}
 
-	params.RootNode()
-
 	var name string
-	if !params.Wrap {
+	if !adder.Wrap {
 		name = root.Links[0].Name
-		child, err := root.Links[0].GetNode(params.ctx, params.node.DAG)
+		child, err := root.Links[0].GetNode(adder.ctx, adder.node.DAG)
 		if err != nil {
 			return nil, err
 		}
 		root = child
 	}
 
-	err = params.outputDirs(name, root)
+	err = adder.outputDirs(name, root)
 	if err != nil {
 		return nil, err
 	}
 
-	err = params.mr.Close()
+	err = adder.mr.Close()
 	if err != nil {
 		return nil, err
 	}
@@ -203,24 +202,24 @@ func (params *Adder) Finalize() (*dag.Node, error) {
 	return root, nil
 }
 
-func (params *Adder) outputDirs(path string, nd *dag.Node) error {
+func (adder *Adder) outputDirs(path string, nd *dag.Node) error {
 	if !bytes.Equal(nd.Data, folderData) {
 		return nil
 	}
 
 	for _, l := range nd.Links {
-		child, err := l.GetNode(params.ctx, params.node.DAG)
+		child, err := l.GetNode(adder.ctx, adder.node.DAG)
 		if err != nil {
 			return err
 		}
 
-		err = params.outputDirs(gopath.Join(path, l.Name), child)
+		err = adder.outputDirs(gopath.Join(path, l.Name), child)
 		if err != nil {
 			return err
 		}
 	}
 
-	return outputDagnode(params.out, path, nd)
+	return outputDagnode(adder.out, path, nd)
 }
 
 // Add builds a merkledag from the a reader, pinning all objects to the local
@@ -318,7 +317,7 @@ func AddWrapped(n *core.IpfsNode, r io.Reader, filename string) (string, *dag.No
 	return gopath.Join(k.String(), filename), dagnode, nil
 }
 
-func (params *Adder) addNode(node *dag.Node, path string) error {
+func (adder *Adder) addNode(node *dag.Node, path string) error {
 	// patch it into the root
 	if path == "" {
 		key, err := node.Key()
@@ -329,22 +328,22 @@ func (params *Adder) addNode(node *dag.Node, path string) error {
 		path = key.Pretty()
 	}
 
-	if err := mfs.PutNode(params.mr, path, node); err != nil {
+	if err := mfs.PutNode(adder.mr, path, node); err != nil {
 		return err
 	}
 
-	if !params.Silent {
-		return outputDagnode(params.out, path, node)
+	if !adder.Silent {
+		return outputDagnode(adder.out, path, node)
 	}
 	return nil
 }
 
-// Add the given file while respecting the params.
-func (params *Adder) AddFile(file files.File) error {
-	params.unlock = params.node.Blockstore.PinLock()
-	defer params.unlock()
+// Add the given file while respecting the adder.
+func (adder *Adder) AddFile(file files.File) error {
+	adder.unlock = adder.node.Blockstore.PinLock()
+	defer adder.unlock()
 
-	return params.addFile(file)
+	return adder.addFile(file)
 }
 
 func (adder *Adder) addFile(file files.File) error {
@@ -394,10 +393,10 @@ func (adder *Adder) addFile(file files.File) error {
 	return adder.addNode(dagnode, file.FileName())
 }
 
-func (params *Adder) addDir(dir files.File) error {
+func (adder *Adder) addDir(dir files.File) error {
 	log.Infof("adding directory: %s", dir.FileName())
 
-	err := mfs.Mkdir(params.mr, dir.FileName(), true)
+	err := mfs.Mkdir(adder.mr, dir.FileName(), true)
 	if err != nil {
 		return err
 	}
@@ -411,7 +410,7 @@ func (params *Adder) addDir(dir files.File) error {
 			break
 		}
 
-		err = params.addFile(file)
+		err = adder.addFile(file)
 		if _, ok := err.(*hiddenFileError); ok {
 			// hidden file error, skip file
 			continue
diff --git a/test/sharness/t0080-repo.sh b/test/sharness/t0080-repo.sh
index 9b1890ab2..01ef79b0a 100755
--- a/test/sharness/t0080-repo.sh
+++ b/test/sharness/t0080-repo.sh
@@ -29,6 +29,11 @@ test_expect_success "'ipfs repo gc' succeeds" '
 	ipfs repo gc >gc_out_actual
 '
 
+test_expect_success "'ipfs repo gc' looks good (patch root)" '
+	PATCH_ROOT=QmQXirSbubiySKnqaFyfs5YzziXRB5JEVQVjU6xsd7innr &&
+	grep "removed $PATCH_ROOT" gc_out_actual
+'
+
 test_expect_success "'ipfs repo gc' doesnt remove file" '
 	ipfs cat "$HASH" >out &&
 	test_cmp out afile
-- 
GitLab