mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 05:22:31 +08:00
30 lines
690 B
Go
30 lines
690 B
Go
package containers
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
|
|
"dagger.io/dagger"
|
|
)
|
|
|
|
var (
|
|
ErrorNonZero = errors.New("container exited with non-zero exit code")
|
|
)
|
|
|
|
// ExitError functionally replaces '(*container).ExitCode' in a more usable way.
|
|
// It will return an error with the container's stderr and stdout if the exit code is not zero.
|
|
func ExitError(ctx context.Context, container *dagger.Container) (*dagger.Container, error) {
|
|
container, err := container.Sync(ctx)
|
|
if err == nil {
|
|
return container, nil
|
|
}
|
|
|
|
var e *dagger.ExecError
|
|
if errors.As(err, &e) {
|
|
return container, fmt.Errorf("%w\nstdout: %s\nstderr: %s", ErrorNonZero, e.Stdout, e.Stderr)
|
|
}
|
|
|
|
return container, err
|
|
}
|