From 86f0aac88c2144604b0e2a7adeeda89129f05024 Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Thu, 6 Nov 2014 04:14:39 -0800 Subject: [PATCH] refac(commands2/pin) loop --- core/commands2/pin.go | 45 ++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/core/commands2/pin.go b/core/commands2/pin.go index eb362a624..b93b33060 100644 --- a/core/commands2/pin.go +++ b/core/commands2/pin.go @@ -5,6 +5,8 @@ import ( "fmt" cmds "github.com/jbenet/go-ipfs/commands" + "github.com/jbenet/go-ipfs/core" + "github.com/jbenet/go-ipfs/merkledag" ) var pinCmd = &cmds.Command{ @@ -35,27 +37,17 @@ var pinCmd = &cmds.Command{ } }*/ + paths := make([]string, 0) for _, arg := range req.Arguments() { path, ok := arg.(string) if !ok { res.SetError(errors.New("cast error"), cmds.ErrNormal) return } - - dagnode, err := n.Resolver.ResolvePath(path) - if err != nil { - res.SetError(fmt.Errorf("pin error: %v", err), cmds.ErrNormal) - return - } - - err = n.Pinning.Pin(dagnode, recursive) - if err != nil { - res.SetError(fmt.Errorf("pin: %v", err), cmds.ErrNormal) - return - } + paths = append(paths, path) } - err := n.Pinning.Flush() + _, err := pin(n, paths, recursive) if err != nil { res.SetError(err, cmds.ErrNormal) } @@ -107,3 +99,30 @@ var unpinCmd = &cmds.Command{ // TODO: create some output to show what got unpinned }, } + +func pin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, error) { + + dagnodes := make([]*merkledag.Node, 0) + for _, path := range paths { + + dagnode, err := n.Resolver.ResolvePath(path) + if err != nil { + return nil, fmt.Errorf("pin error: %v", err) + } + dagnodes = append(dagnodes, dagnode) + } + + for _, dagnode := range dagnodes { + err := n.Pinning.Pin(dagnode, recursive) + if err != nil { + return nil, fmt.Errorf("pin: %v", err) + } + } + + err := n.Pinning.Flush() + if err != nil { + return nil, err + } + + return dagnodes, nil +}