提交 953448af 作者: Jakub Sztandera

Fix refs local marshalling

License: MIT
Signed-off-by: 's avatarJakub Sztandera <kubuxu@protonmail.ch>
上级 385055d2
......@@ -117,35 +117,8 @@ NOTE: List all references recursively by using the flag '-r'.
}
}()
},
Marshalers: cmds.MarshalerMap{
cmds.Text: func(res cmds.Response) (io.Reader, error) {
outChan, ok := res.Output().(<-chan interface{})
if !ok {
return nil, u.ErrCast()
}
marshal := func(v interface{}) (io.Reader, error) {
obj, ok := v.(*RefWrapper)
if !ok {
fmt.Println("%#v", v)
return nil, u.ErrCast()
}
if obj.Err != "" {
return nil, errors.New(obj.Err)
}
return strings.NewReader(obj.Ref + "\n"), nil
}
return &cmds.ChannelMarshaler{
Channel: outChan,
Marshaler: marshal,
Res: res,
}, nil
},
},
Type: RefWrapper{},
Marshalers: refsMarshallerMap,
Type: RefWrapper{},
}
var RefsLocalCmd = &cmds.Command{
......@@ -171,21 +144,47 @@ Displays the hashes of all local objects.
return
}
piper, pipew := io.Pipe()
out := make(chan interface{})
res.SetOutput((<-chan interface{})(out))
go func() {
defer pipew.Close()
defer close(out)
for k := range allKeys {
s := k.B58String() + "\n"
if _, err := pipew.Write([]byte(s)); err != nil {
log.Error("pipe write error: ", err)
return
}
out <- &RefWrapper{Ref: k.B58String()}
}
}()
},
Marshalers: refsMarshallerMap,
Type: RefWrapper{},
}
var refsMarshallerMap = cmds.MarshalerMap{
cmds.Text: func(res cmds.Response) (io.Reader, error) {
outChan, ok := res.Output().(<-chan interface{})
if !ok {
return nil, u.ErrCast()
}
marshal := func(v interface{}) (io.Reader, error) {
obj, ok := v.(*RefWrapper)
if !ok {
fmt.Println("%#v", v)
return nil, u.ErrCast()
}
if obj.Err != "" {
return nil, errors.New(obj.Err)
}
return strings.NewReader(obj.Ref + "\n"), nil
}
res.SetOutput(piper)
return &cmds.ChannelMarshaler{
Channel: outChan,
Marshaler: marshal,
Res: res,
}, nil
},
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论