mirror of
https://github.com/harness/drone.git
synced 2025-05-07 23:01:10 +08:00
[maint] exit code added in error type (#1006)
This commit is contained in:
parent
ff2e8dc9c5
commit
a4f36c17ce
@ -133,13 +133,15 @@ func (c *Command) Run(ctx context.Context, opts ...RunOptionFunc) (err error) {
|
|||||||
|
|
||||||
return ctx.Err()
|
return ctx.Err()
|
||||||
case err = <-result:
|
case err = <-result:
|
||||||
if err != nil && errAsBuff {
|
if err == nil {
|
||||||
buff, ok := options.Stderr.(*bytes.Buffer)
|
return nil
|
||||||
if ok {
|
|
||||||
return NewError(err, buff.Bytes())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return err
|
|
||||||
|
var stderr []byte
|
||||||
|
if buff, ok := options.Stderr.(*bytes.Buffer); ok && errAsBuff {
|
||||||
|
stderr = buff.Bytes()
|
||||||
|
}
|
||||||
|
return NewError(err, stderr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ package command
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -24,7 +25,7 @@ var (
|
|||||||
ErrInvalidArg = errors.New("invalid argument")
|
ErrInvalidArg = errors.New("invalid argument")
|
||||||
)
|
)
|
||||||
|
|
||||||
// Error type with optional Stderr payload.
|
// Error type with optional ExitCode and Stderr payload.
|
||||||
type Error struct {
|
type Error struct {
|
||||||
Err error
|
Err error
|
||||||
StdErr []byte
|
StdErr []byte
|
||||||
@ -38,6 +39,15 @@ func NewError(err error, stderr []byte) *Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Error) ExitCode() int {
|
||||||
|
var exitErr *exec.ExitError
|
||||||
|
ok := errors.As(e.Err, &exitErr)
|
||||||
|
if ok {
|
||||||
|
return exitErr.ExitCode()
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Error) Error() string {
|
func (e *Error) Error() string {
|
||||||
if len(e.StdErr) != 0 {
|
if len(e.StdErr) != 0 {
|
||||||
return fmt.Sprintf("%s: %s", e.Err.Error(), e.StdErr)
|
return fmt.Sprintf("%s: %s", e.Err.Error(), e.StdErr)
|
||||||
@ -45,6 +55,10 @@ func (e *Error) Error() string {
|
|||||||
return e.Err.Error()
|
return e.Err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Error) Unwrap() error {
|
||||||
|
return e.Err
|
||||||
|
}
|
||||||
|
|
||||||
// AsError unwraps Error otherwise return nil.
|
// AsError unwraps Error otherwise return nil.
|
||||||
func AsError(err error) (e *Error) {
|
func AsError(err error) (e *Error) {
|
||||||
if errors.As(err, &e) {
|
if errors.As(err, &e) {
|
||||||
|
Loading…
Reference in New Issue
Block a user