mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-27 05:17:49 +08:00
Updates: * go-kad-dht: Query performance improvements, DHT client fixes, validates records on *local* put. * go-libp2p-swarm/go-libp2p-transport: Timeout improvements. * go-multiaddr-net: Exposes useful Conn methods (CloseWrite, CloseRead, etc.) * go-log: fixes possible panic when enabling/disabling events. * go-multiaddr: fixes possible panic when stringifying malformed multiaddrs, adds support for consuming /p2p/ multiaddrs. fixes #5113 unblocks #4895 License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package legacy
|
|
|
|
import (
|
|
"io"
|
|
|
|
"gx/ipfs/QmNueRyPRQiV7PUEpnP4GgGLuK1rKQLaRW7sfPvUetYig1/go-ipfs-cmds"
|
|
|
|
oldcmds "github.com/ipfs/go-ipfs/commands"
|
|
logging "gx/ipfs/QmcVVHfdyv15GVPk7NrxdWjh2hLVccXnoD8j2tyQShiXJb/go-log"
|
|
)
|
|
|
|
var log = logging.Logger("cmds/lgc")
|
|
|
|
// NewCommand returns a Command from an oldcmds.Command
|
|
func NewCommand(oldcmd *oldcmds.Command) *cmds.Command {
|
|
if oldcmd == nil {
|
|
return nil
|
|
}
|
|
var cmd *cmds.Command
|
|
|
|
cmd = &cmds.Command{
|
|
Options: oldcmd.Options,
|
|
Arguments: oldcmd.Arguments,
|
|
Helptext: oldcmd.Helptext,
|
|
External: oldcmd.External,
|
|
Type: oldcmd.Type,
|
|
|
|
Subcommands: make(map[string]*cmds.Command),
|
|
}
|
|
|
|
if oldcmd.Run != nil {
|
|
cmd.Run = func(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment) {
|
|
oldReq := &requestWrapper{req, OldContext(env)}
|
|
res := &fakeResponse{req: oldReq, re: re, wait: make(chan struct{})}
|
|
|
|
errCh := make(chan error)
|
|
go res.Send(errCh)
|
|
oldcmd.Run(oldReq, res)
|
|
err := <-errCh
|
|
if err != nil {
|
|
log.Error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
if oldcmd.PreRun != nil {
|
|
cmd.PreRun = func(req *cmds.Request, env cmds.Environment) error {
|
|
oldReq := &requestWrapper{req, OldContext(env)}
|
|
return oldcmd.PreRun(oldReq)
|
|
}
|
|
}
|
|
|
|
for name, sub := range oldcmd.Subcommands {
|
|
cmd.Subcommands[name] = NewCommand(sub)
|
|
}
|
|
|
|
cmd.Encoders = make(cmds.EncoderMap)
|
|
|
|
for encType, m := range oldcmd.Marshalers {
|
|
cmd.Encoders[cmds.EncodingType(encType)] = func(m oldcmds.Marshaler, encType oldcmds.EncodingType) func(req *cmds.Request) func(io.Writer) cmds.Encoder {
|
|
return func(req *cmds.Request) func(io.Writer) cmds.Encoder {
|
|
return func(w io.Writer) cmds.Encoder {
|
|
return NewMarshalerEncoder(req, m, w)
|
|
}
|
|
}
|
|
}(m, encType)
|
|
}
|
|
|
|
return cmd
|
|
}
|