1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-08-06 03:19:47 +08:00

big squash commit

excerpt of commit messages:
- update postrun functions in core/commands
- sharness: allow setting -i with TEST_IMMEDIATE=1
- cmds Run func returns error now
- gx update cmdkit to 1.1.2 and cmds to 2.0.0-beta1

License: MIT
Signed-off-by: keks <keks@cryptoscope.co>
This commit is contained in:
keks
2018-04-13 16:14:30 +02:00
committed by Steven Allen
parent 61f31e5dc0
commit 908ffddc1b
38 changed files with 489 additions and 647 deletions

View File

@ -10,8 +10,8 @@ import (
cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv"
coreunix "github.com/ipfs/go-ipfs/core/coreunix"
cmds "gx/ipfs/QmPTfgFTo9PFr1PvPKyKoeMgBvYPh6cX3aDP7DHKVbnCbi/go-ipfs-cmds"
"gx/ipfs/QmSP88ryZkHSRn1fnngAaV2Vcn63WUJzAavnRM9CVdU1Ky/go-ipfs-cmdkit"
cmds "gx/ipfs/QmZVPuwGNz2s9THwLS4psrJGam6NSEQMvDTaaZgNfqQBCE/go-ipfs-cmds"
)
const progressBarMinSize = 1024 * 1024 * 8 // show progress bar for outputs > 8MiB
@ -29,34 +29,29 @@ var CatCmd = &cmds.Command{
cmdkit.IntOption("offset", "o", "Byte offset to begin reading from."),
cmdkit.IntOption("length", "l", "Maximum number of bytes to read."),
},
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) {
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
node, err := cmdenv.GetNode(env)
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
return err
}
if !node.OnlineMode() {
if err := node.SetupOfflineRouting(); err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
return err
}
}
offset, _ := req.Options["offset"].(int)
if offset < 0 {
res.SetError(fmt.Errorf("cannot specify negative offset"), cmdkit.ErrNormal)
return
return fmt.Errorf("cannot specify negative offset")
}
max, found := req.Options["length"].(int)
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
return err
}
if max < 0 {
res.SetError(fmt.Errorf("cannot specify negative length"), cmdkit.ErrNormal)
return
return fmt.Errorf("cannot specify negative length")
}
if !found {
max = -1
@ -64,14 +59,12 @@ var CatCmd = &cmds.Command{
err = req.ParseBodyArgs()
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
return err
}
readers, length, err := cat(req.Context, node, req.Arguments, int64(offset), int64(max))
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
return
return err
}
/*
@ -88,48 +81,36 @@ var CatCmd = &cmds.Command{
// returned from io.Copy inside Emit, we need to take Emit errors and send
// them to the client. Usually we don't do that because it means the connection
// is broken or we supplied an illegal argument etc.
err = res.Emit(reader)
if err != nil {
res.SetError(err, cmdkit.ErrNormal)
}
return res.Emit(reader)
},
PostRun: cmds.PostRunMap{
cmds.CLI: func(req *cmds.Request, re cmds.ResponseEmitter) cmds.ResponseEmitter {
reNext, res := cmds.NewChanResponsePair(req)
cmds.CLI: func(res cmds.Response, re cmds.ResponseEmitter) error {
if res.Length() > 0 && res.Length() < progressBarMinSize {
return cmds.Copy(re, res)
}
go func() {
if res.Length() > 0 && res.Length() < progressBarMinSize {
if err := cmds.Copy(re, res); err != nil {
re.SetError(err, cmdkit.ErrNormal)
for {
v, err := res.Next()
if err != nil {
if err == io.EOF {
return nil
}
return
return err
}
// Copy closes by itself, so we must not do this before
defer re.Close()
for {
v, err := res.Next()
if !cmds.HandleError(err, res, re) {
break
}
switch val := v.(type) {
case io.Reader:
bar, reader := progressBarForReader(os.Stderr, val, int64(res.Length()))
bar.Start()
switch val := v.(type) {
case io.Reader:
bar, reader := progressBarForReader(os.Stderr, val, int64(res.Length()))
bar.Start()
err = re.Emit(reader)
if err != nil {
log.Error(err)
}
default:
log.Warningf("cat postrun: received unexpected type %T", val)
err = re.Emit(reader)
if err != nil {
return err
}
default:
log.Warningf("cat postrun: received unexpected type %T", val)
}
}()
return reNext
}
},
},
}