@cryptotaxi247 / kubo / commits / 2a15fe8e1

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 +}