提交 2a15fe8e 作者: Brian Tiger Chow 提交者: Juan Batiz-Benet

refactor(commands2/cat) readability

上级 c67e3771
package commands package commands
import ( import (
"errors"
"io" "io"
cmds "github.com/jbenet/go-ipfs/commands" cmds "github.com/jbenet/go-ipfs/commands"
core "github.com/jbenet/go-ipfs/core"
uio "github.com/jbenet/go-ipfs/unixfs/io" uio "github.com/jbenet/go-ipfs/unixfs/io"
) )
...@@ -14,26 +16,41 @@ var catCmd = &cmds.Command{ ...@@ -14,26 +16,41 @@ var catCmd = &cmds.Command{
Help: "TODO", Help: "TODO",
Run: func(res cmds.Response, req cmds.Request) { Run: func(res cmds.Response, req cmds.Request) {
node := req.Context().Node node := req.Context().Node
paths := make([]string, 0, len(req.Arguments()))
readers := make([]io.Reader, 0, len(req.Arguments())) readers := make([]io.Reader, 0, len(req.Arguments()))
for _, arg := range req.Arguments() { for _, arg := range req.Arguments() {
path := arg.(string) path, ok := arg.(string)
dagnode, err := node.Resolver.ResolvePath(path) if !ok {
if err != nil { res.SetError(errors.New("cast error"), cmds.ErrNormal)
res.SetError(err, cmds.ErrNormal)
return return
} }
paths = append(paths, path)
}
read, err := uio.NewDagReader(dagnode, node.DAG) readers, err := cat(node, paths)
if err != nil { if err != nil {
res.SetError(err, cmds.ErrNormal) res.SetError(err, cmds.ErrNormal)
return return
} }
readers = append(readers, read)
}
reader := io.MultiReader(readers...) reader := io.MultiReader(readers...)
res.SetOutput(reader) res.SetOutput(reader)
}, },
} }
func cat(node *core.IpfsNode, paths []string) ([]io.Reader, error) {
readers := make([]io.Reader, 0, len(paths))
for _, path := range paths {
dagnode, err := node.Resolver.ResolvePath(path)
if err != nil {
return nil, err
}
read, err := uio.NewDagReader(dagnode, node.DAG)
if err != nil {
return nil, err
}
readers = append(readers, read)
}
return readers, nil
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论