@cryptotaxi247 / kubo / commits / 440c90be2

extract unpin

@mappum

Brian Tiger Chow committed Nov 6, 2014 at 04:41 UTC 440c90be2490af0b6754eb19a089f7f896fd8286
1 file changed +33 -23
core/commands2/pin.go
+33 -23
@@ -1,11 +1,11 @@
1 package commands
2
3 import (
4 - "errors"
4 "fmt"
5
6 cmds "github.com/jbenet/go-ipfs/commands"
7 "github.com/jbenet/go-ipfs/core"
8 + "github.com/jbenet/go-ipfs/core/commands2/internal"
9 "github.com/jbenet/go-ipfs/merkledag"
10 )
11
@@ -37,7 +37,7 @@ var pinCmd = &cmds.Command{
37 }
38 }*/
39
40 - paths, err := toStrings(req.Arguments())
40 + paths, err := internal.ToStrings(req.Arguments())
41 if err != nil {
42 res.SetError(err, cmds.ErrNormal)
43 return
@@ -66,28 +66,13 @@ var unpinCmd = &cmds.Command{
66 opt, _ := req.Option("recursive")
67 recursive, _ := opt.(bool) // false if cast fails.
68
69 - for _, arg := range req.Arguments() {
70 - path, ok := arg.(string)
71 - if !ok {
72 - res.SetError(errors.New("cast error"), cmds.ErrNormal)
73 - return
74 - }
75 -
76 - dagnode, err := n.Resolver.ResolvePath(path)
77 - if err != nil {
78 - res.SetError(fmt.Errorf("pin error: %v", err), cmds.ErrNormal)
79 - return
80 - }
81 -
82 - k, _ := dagnode.Key()
83 - err = n.Pinning.Unpin(k, recursive)
84 - if err != nil {
85 - res.SetError(fmt.Errorf("pin: %v", err), cmds.ErrNormal)
86 - return
87 - }
69 + paths, err := internal.ToStrings(req.Arguments())
70 + if err != nil {
71 + res.SetError(err, cmds.ErrNormal)
72 + return
73 }
74
90 - err := n.Pinning.Flush()
75 + _, err = unpin(n, paths, recursive)
76 if err != nil {
77 res.SetError(err, cmds.ErrNormal)
78 }
@@ -100,7 +85,6 @@ func pin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, e
85
86 dagnodes := make([]*merkledag.Node, 0)
87 for _, path := range paths {
103 -
88 dagnode, err := n.Resolver.ResolvePath(path)
89 if err != nil {
90 return nil, fmt.Errorf("pin error: %v", err)
@@ -122,3 +106,29 @@ func pin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, e
106
107 return dagnodes, nil
108 }
109 +
110 +func unpin(n *core.IpfsNode, paths []string, recursive bool) ([]*merkledag.Node, error) {
111 +
112 + dagnodes := make([]*merkledag.Node, 0)
113 + for _, path := range paths {
114 + dagnode, err := n.Resolver.ResolvePath(path)
115 + if err != nil {
116 + return nil, err
117 + }
118 + dagnodes = append(dagnodes, dagnode)
119 + }
120 +
121 + for _, dagnode := range dagnodes {
122 + k, _ := dagnode.Key()
123 + err := n.Pinning.Unpin(k, recursive)
124 + if err != nil {
125 + return nil, err
126 + }
127 + }
128 +
129 + err := n.Pinning.Flush()
130 + if err != nil {
131 + return nil, err
132 + }
133 + return dagnodes, nil
134 +}