Skip to content

Commit

Permalink
Eliminate emit closure, so something with errors on call to emit.
Browse files Browse the repository at this point in the history
License: MIT
Signed-off-by: Kevin Atkinson <k@kevina.org>
  • Loading branch information
kevina committed Aug 30, 2018
1 parent 5728b52 commit 11e3ed1
Showing 1 changed file with 17 additions and 12 deletions.
29 changes: 17 additions & 12 deletions core/commands/cid.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,21 +156,17 @@ func (i *argumentIterator) err() error {

func emitCids(req *cmds.Request, resp cmds.ResponseEmitter, opts cidFormatOpts) {
itr := argumentIterator{req.Arguments, req.BodyArgs()}
for {
var emitErr error
for emitErr == nil {
cidStr, ok := itr.next()
if !ok {
break
}
emit := func(fmtd string, err error) {
res := &CidFormatRes{CidStr: cidStr, Formatted: fmtd}
if err != nil {
res.ErrorMsg = err.Error()
}
resp.Emit(res)
}
res := &CidFormatRes{CidStr: cidStr}
c, err := cid.Decode(cidStr)
if err != nil {
emit("", err)
res.ErrorMsg = err.Error()
emitErr = resp.Emit(res)
continue
}
base := opts.newBase
Expand All @@ -180,17 +176,26 @@ func emitCids(req *cmds.Request, resp cmds.ResponseEmitter, opts cidFormatOpts)
if opts.verConv != nil {
c, err = opts.verConv(c)
if err != nil {
emit("", err)
res.ErrorMsg = err.Error()
emitErr = resp.Emit(res)
continue
}
}
str, err := cidutil.Format(opts.fmtStr, base, c)
if _, ok := err.(cidutil.FormatStringError); ok {
// no point in continuing if there is a problem with the format string
resp.SetError(err, cmdkit.ErrNormal)
return
}
emit(str, err)
if err != nil {
res.ErrorMsg = err.Error()
} else {
res.Formatted = str
}
emitErr = resp.Emit(res)
}
if emitErr != nil {
resp.SetError(emitErr, cmdkit.ErrFatal)
return
}
err := itr.err()
if err != nil {
Expand Down

0 comments on commit 11e3ed1

Please sign in to comment.