refactor(commands2/cat) readability
Brian Tiger Chow committed
Nov 4, 2014 at 02:42 UTC
2a15fe8e1eba236ef398d768661a0fb82fb1c41e
1 file changed
+28
-11
core/commands2/cat.go
+28
-11
@@ -1,9 +1,11 @@
1
package commands
2
3
import (
4
+ "errors"
5
"io"
6
7
cmds "github.com/jbenet/go-ipfs/commands"
8
+ core "github.com/jbenet/go-ipfs/core"
9
uio "github.com/jbenet/go-ipfs/unixfs/io"
10
)
11
@@ -14,26 +16,41 @@ var catCmd = &cmds.Command{
16
Help: "TODO",
17
Run: func(res cmds.Response, req cmds.Request) {
18
node := req.Context().Node
19
+ paths := make([]string, 0, len(req.Arguments()))
20
readers := make([]io.Reader, 0, len(req.Arguments()))
21
22
for _, arg := range req.Arguments() {
20
- path := arg.(string)
21
- dagnode, err := node.Resolver.ResolvePath(path)
22
- if err != nil {
23
- res.SetError(err, cmds.ErrNormal)
24
- return
25
- }
26
-
27
- read, err := uio.NewDagReader(dagnode, node.DAG)
28
- if err != nil {
29
- res.SetError(err, cmds.ErrNormal)
23
+ path, ok := arg.(string)
24
+ if !ok {
25
+ res.SetError(errors.New("cast error"), cmds.ErrNormal)
26
return
27
}
28
+ paths = append(paths, path)
29
+ }
30
33
- readers = append(readers, read)
31
+ readers, err := cat(node, paths)
32
+ if err != nil {
33
+ res.SetError(err, cmds.ErrNormal)
34
+ return
35
}
36
37
reader := io.MultiReader(readers...)
38
res.SetOutput(reader)
39
},
40
}
41
+
42
+func cat(node *core.IpfsNode, paths []string) ([]io.Reader, error) {
43
+ readers := make([]io.Reader, 0, len(paths))
44
+ for _, path := range paths {
45
+ dagnode, err := node.Resolver.ResolvePath(path)
46
+ if err != nil {
47
+ return nil, err
48
+ }
49
+ read, err := uio.NewDagReader(dagnode, node.DAG)
50
+ if err != nil {
51
+ return nil, err
52
+ }
53
+ readers = append(readers, read)
54
+ }
55
+ return readers, nil
56
+}