123456789101112131415161718192021222324252627282930313233 |
- package system
- import (
- "fmt"
- "os/exec"
- "syscall"
- )
- // GetExitCode returns the ExitStatus of the specified error if its type is
- // exec.ExitError, returns 0 and an error otherwise.
- func GetExitCode(err error) (int, error) {
- exitCode := 0
- if exiterr, ok := err.(*exec.ExitError); ok {
- if procExit, ok := exiterr.Sys().(syscall.WaitStatus); ok {
- return procExit.ExitStatus(), nil
- }
- }
- return exitCode, fmt.Errorf("failed to get exit code")
- }
- // ProcessExitCode process the specified error and returns the exit status code
- // if the error was of type exec.ExitError, returns nothing otherwise.
- func ProcessExitCode(err error) (exitCode int) {
- if err != nil {
- var exiterr error
- if exitCode, exiterr = GetExitCode(err); exiterr != nil {
- // TODO: Fix this so we check the error's text.
- // we've failed to retrieve exit code, so we set it to 127
- exitCode = 127
- }
- }
- return
- }
|