@cryptotaxi247 / kubo / commits / 728f17d3c

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 }