cmd/ipfs/pin.go now uses MakeCommand
+ added recursive pinning func
Juan Batiz-Benet committed
Oct 1, 2014 at 01:10 UTC
728f17d3c9f43aa88d88b98dec959604576fcc73
4 files changed
+20
-32
cmd/ipfs/pin.go
+4
-28
@@ -1,13 +1,9 @@
1
package main
2
3
import (
4
- "os"
5
-
4
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
5
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
6
"github.com/jbenet/go-ipfs/core/commands"
9
- "github.com/jbenet/go-ipfs/daemon"
10
- u "github.com/jbenet/go-ipfs/util"
7
)
8
9
var cmdIpfsPin = &commander.Command{
@@ -22,28 +18,8 @@ var cmdIpfsPin = &commander.Command{
18
Flag: *flag.NewFlagSet("ipfs-pin", flag.ExitOnError),
19
}
20
25
-func pinCmd(c *commander.Command, inp []string) error {
26
- if len(inp) < 1 {
27
- u.POut(c.Long)
28
- return nil
29
- }
30
-
31
- cmd := daemon.NewCommand()
32
- cmd.Command = "pin"
33
- cmd.Args = inp
34
-
35
- err := daemon.SendCommand(cmd, "localhost:12345")
36
- if err != nil {
37
- conf, err := getConfigDir(c.Parent)
38
- if err != nil {
39
- return err
40
- }
41
- n, err := localNode(conf, false)
42
- if err != nil {
43
- return err
44
- }
45
-
46
- return commands.Pin(n, cmd.Args, cmd.Opts, os.Stdout)
47
- }
48
- return nil
21
+func init() {
22
+ cmdIpfsPin.Flag.Bool("r", false, "pin objects recursively")
23
}
24
+
25
+var pinCmd = MakeCommand("pin", []string{"r"}, commands.Pin)
core/commands/add.go
+1
-1
@@ -133,5 +133,5 @@ func addNode(n *core.IpfsNode, nd *dag.Node, fpath string) error {
133
u.POut("added %s %s\n", k.Pretty(), fpath)
134
135
// ensure we keep it. atm no-op
136
- return n.PinDagNode(nd)
136
+ return n.PinDagNodeRecursively(nd, -1)
137
}
core/commands/pin.go
+8
-1
@@ -8,13 +8,20 @@ import (
8
)
9
10
func Pin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
11
+
12
+ // if recursive, set flag
13
+ depth := 1
14
+ if r, ok := opts["r"].(bool); r && ok {
15
+ depth = -1
16
+ }
17
+
18
for _, fn := range args {
19
dagnode, err := n.Resolver.ResolvePath(fn)
20
if err != nil {
21
return fmt.Errorf("pin error: %v", err)
22
}
23
17
- err = n.PinDagNode(dagnode)
24
+ err = n.PinDagNodeRecursively(dagnode, depth)
25
if err != nil {
26
return fmt.Errorf("pin: %v", err)
27
}
core/core.go
+7
-2
@@ -240,8 +240,13 @@ func initConnections(ctx context.Context, cfg *config.Config, pstore peer.Peerst
240
}
241
}
242
243
-// PinDagNode ensures a given node is stored persistently locally.
243
+// PinDagNode ensures a given node is stored persistently locally
244
func (n *IpfsNode) PinDagNode(nd *merkledag.Node) error {
245
- u.DOut("Pinning node. Currently No-Op\n")
245
+ return n.PinDagNodeRecursively(nd, 1)
246
+}
247
+
248
+// PinDagNodeRecursively ensures a given node is stored persistently locally
249
+func (n *IpfsNode) PinDagNodeRecursively(nd *merkledag.Node, depth int) error {
250
+ u.DOut("Pinning node recursively. Currently No-Op\n")
251
return nil
252
}