@cryptotaxi247 / kubo / commits / b55a5078a

refactor daemon code, moved commands to core/commands

Jeromy committed Sep 12, 2014 at 21:29 UTC b55a5078a837b72a8f17d61952fbf9138dd5d42f
8 files changed +112 -70
cmd/ipfs/add.go
+2 -1
@@ -6,6 +6,7 @@ import (
6
7 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
8 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
9 + "github.com/jbenet/go-ipfs/core/commands"
10 "github.com/jbenet/go-ipfs/daemon"
11 u "github.com/jbenet/go-ipfs/util"
12 )
@@ -50,7 +51,7 @@ func addCmd(c *commander.Command, inp []string) error {
51 return err
52 }
53
53 - err := daemon.ExecuteCommand(cmd, n, os.Stdout)
54 + err = commands.Add(n, cmd.Args, cmd.Opts, os.Stdout)
55 if err != nil {
56 fmt.Println(err)
57 }
cmd/ipfs/cat.go
+2 -1
@@ -6,6 +6,7 @@ import (
6
7 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
8 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
9 + "github.com/jbenet/go-ipfs/core/commands"
10 "github.com/jbenet/go-ipfs/daemon"
11 u "github.com/jbenet/go-ipfs/util"
12 )
@@ -39,7 +40,7 @@ func catCmd(c *commander.Command, inp []string) error {
40 return err
41 }
42
42 - err := daemon.ExecuteCommand(com, n, os.Stdout)
43 + err = commands.Cat(n, com.Args, com.Opts, os.Stdout)
44 if err != nil {
45 fmt.Println(err)
46 }
cmd/ipfs/ls.go
+2 -1
@@ -6,6 +6,7 @@ import (
6
7 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
8 "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
9 + "github.com/jbenet/go-ipfs/core/commands"
10 "github.com/jbenet/go-ipfs/daemon"
11 u "github.com/jbenet/go-ipfs/util"
12 )
@@ -42,7 +43,7 @@ func lsCmd(c *commander.Command, inp []string) error {
43 return err
44 }
45
45 - err := daemon.ExecuteCommand(com, n, os.Stdout)
46 + err = commands.Ls(n, com.Args, com.Opts, os.Stdout)
47 if err != nil {
48 fmt.Println(err)
49 }
core/commands/add.go
+22
@@ -2,6 +2,7 @@ package commands
2
3 import (
4 "fmt"
5 + "io"
6 "io/ioutil"
7 "os"
8 "path/filepath"
@@ -15,6 +16,27 @@ import (
16 // Error indicating the max depth has been exceded.
17 var ErrDepthLimitExceeded = fmt.Errorf("depth limit exceeded")
18
19 +func Add(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
20 + depth := 1
21 + if r, ok := opts["r"].(bool); r && ok {
22 + depth = -1
23 + }
24 + for _, path := range args {
25 + nd, err := AddPath(n, path, depth)
26 + if err != nil {
27 + return fmt.Errorf("addFile error: %v", err)
28 + }
29 +
30 + k, err := nd.Key()
31 + if err != nil {
32 + return fmt.Errorf("addFile error: %v", err)
33 + }
34 +
35 + fmt.Fprintf(out, "Added node: %s = %s\n", path, k.Pretty())
36 + }
37 + return nil
38 +}
39 +
40 func AddPath(n *core.IpfsNode, fpath string, depth int) (*dag.Node, error) {
41 if depth == 0 {
42 return nil, ErrDepthLimitExceeded
core/commands/cat.go new
+29
@@ -0,0 +1,29 @@
1 +package commands
2 +
3 +import (
4 + "fmt"
5 + "io"
6 +
7 + "github.com/jbenet/go-ipfs/core"
8 + mdag "github.com/jbenet/go-ipfs/merkledag"
9 +)
10 +
11 +func Cat(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
12 + for _, fn := range args {
13 + dagnode, err := n.Resolver.ResolvePath(fn)
14 + if err != nil {
15 + return fmt.Errorf("catFile error: %v", err)
16 + }
17 +
18 + read, err := mdag.NewDagReader(dagnode, n.DAG)
19 + if err != nil {
20 + return fmt.Errorf("cat error: %v", err)
21 + }
22 +
23 + _, err = io.Copy(out, read)
24 + if err != nil {
25 + return fmt.Errorf("cat error: %v", err)
26 + }
27 + }
28 + return nil
29 +}
core/commands/ls.go new
+22
@@ -0,0 +1,22 @@
1 +package commands
2 +
3 +import (
4 + "fmt"
5 + "io"
6 +
7 + "github.com/jbenet/go-ipfs/core"
8 +)
9 +
10 +func Ls(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
11 + for _, fn := range args {
12 + dagnode, err := n.Resolver.ResolvePath(fn)
13 + if err != nil {
14 + return fmt.Errorf("ls error: %v", err)
15 + }
16 +
17 + for _, link := range dagnode.Links {
18 + fmt.Fprintf(out, "%s %d %s\n", link.Hash.B58String(), link.Size, link.Name)
19 + }
20 + }
21 + return nil
22 +}
core/commands/pin.go new
+23
@@ -0,0 +1,23 @@
1 +package commands
2 +
3 +import (
4 + "fmt"
5 + "io"
6 +
7 + "github.com/jbenet/go-ipfs/core"
8 +)
9 +
10 +func Pin(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
11 + for _, fn := range args {
12 + dagnode, err := n.Resolver.ResolvePath(fn)
13 + if err != nil {
14 + return fmt.Errorf("pin error: %v", err)
15 + }
16 +
17 + err = n.PinDagNode(dagnode)
18 + if err != nil {
19 + return fmt.Errorf("pin: %v", err)
20 + }
21 + }
22 + return nil
23 +}
daemon/daemon.go
+10 -67
@@ -3,12 +3,10 @@ package daemon
3 import (
4 "encoding/json"
5 "fmt"
6 - "io"
6 "net"
7
8 core "github.com/jbenet/go-ipfs/core"
10 - commands "github.com/jbenet/go-ipfs/core/commands"
11 - dag "github.com/jbenet/go-ipfs/merkledag"
9 + "github.com/jbenet/go-ipfs/core/commands"
10 u "github.com/jbenet/go-ipfs/util"
11 )
12
@@ -74,75 +72,20 @@ func (dl *DaemonListener) handleConnection(conn net.Conn) {
72 }
73
74 u.DOut("Got command: %v\n", command)
77 - err := ExecuteCommand(&command, dl.node, conn)
78 - if err != nil {
79 - fmt.Fprintln(conn, "%v\n", err)
80 - }
81 -}
82 -
83 -func ExecuteCommand(com *Command, ipfsnode *core.IpfsNode, out io.Writer) error {
84 - u.DOut("executing command: %s\n", com.Command)
85 - switch com.Command {
75 + switch command.Command {
76 case "add":
87 - depth := 1
88 - if r, ok := com.Opts["r"].(bool); r && ok {
89 - depth = -1
90 - }
91 - for _, path := range com.Args {
92 - nd, err := commands.AddPath(ipfsnode, path, depth)
93 - if err != nil {
94 - return fmt.Errorf("addFile error: %v", err)
95 - }
96 -
97 - k, err := nd.Key()
98 - if err != nil {
99 - return fmt.Errorf("addFile error: %v", err)
100 - }
101 -
102 - fmt.Fprintf(out, "Added node: %s = %s\n", path, k.Pretty())
103 - }
77 + err = commands.Add(dl.node, command.Args, command.Opts, conn)
78 case "cat":
105 - for _, fn := range com.Args {
106 - dagnode, err := ipfsnode.Resolver.ResolvePath(fn)
107 - if err != nil {
108 - return fmt.Errorf("catFile error: %v", err)
109 - }
110 -
111 - read, err := dag.NewDagReader(dagnode, ipfsnode.DAG)
112 - if err != nil {
113 - return fmt.Errorf("cat error: %v", err)
114 - }
115 -
116 - _, err = io.Copy(out, read)
117 - if err != nil {
118 - return fmt.Errorf("cat error: %v", err)
119 - }
120 - }
79 + err = commands.Cat(dl.node, command.Args, command.Opts, conn)
80 case "ls":
122 - for _, fn := range com.Args {
123 - dagnode, err := ipfsnode.Resolver.ResolvePath(fn)
124 - if err != nil {
125 - return fmt.Errorf("ls error: %v", err)
126 - }
127 -
128 - for _, link := range dagnode.Links {
129 - fmt.Fprintf(out, "%s %d %s\n", link.Hash.B58String(), link.Size, link.Name)
130 - }
131 - }
81 + err = commands.Ls(dl.node, command.Args, command.Opts, conn)
82 case "pin":
133 - for _, fn := range com.Args {
134 - dagnode, err := ipfsnode.Resolver.ResolvePath(fn)
135 - if err != nil {
136 - return fmt.Errorf("pin error: %v", err)
137 - }
138 -
139 - err = ipfsnode.PinDagNode(dagnode)
140 - if err != nil {
141 - return fmt.Errorf("pin: %v", err)
142 - }
143 - }
83 + err = commands.Pin(dl.node, command.Args, command.Opts, conn)
84 default:
145 - return fmt.Errord("Invalid Command: '%s'", com.Command)
85 + err = fmt.Errorf("Invalid Command: '%s'", command.Command)
86 + }
87 + if err != nil {
88 + fmt.Fprintln(conn, err)
89 }
90 }
91