github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podman/errors_remote.go (about) 1 // +build remoteclient 2 3 package main 4 5 import ( 6 "fmt" 7 "os" 8 "os/exec" 9 "syscall" 10 11 "github.com/containers/libpod/libpod/define" 12 iopodman "github.com/containers/libpod/pkg/varlink" 13 "github.com/pkg/errors" 14 "github.com/sirupsen/logrus" 15 ) 16 17 func outputError(err error) { 18 if MainGlobalOpts.LogLevel == "debug" { 19 logrus.Errorf(err.Error()) 20 } else { 21 if ee, ok := err.(*exec.ExitError); ok { 22 if status, ok := ee.Sys().(syscall.WaitStatus); ok { 23 exitCode = status.ExitStatus() 24 } 25 } 26 var ne error 27 switch e := err.(type) { 28 // For some reason golang won't let me list them with commas so listing them all. 29 case *iopodman.ImageNotFound: 30 ne = errors.New(e.Reason) 31 case *iopodman.ContainerNotFound: 32 ne = errors.New(e.Reason) 33 case *iopodman.PodNotFound: 34 ne = errors.New(e.Reason) 35 case *iopodman.VolumeNotFound: 36 ne = errors.New(e.Reason) 37 case *iopodman.InvalidState: 38 ne = errors.New(e.Reason) 39 case *iopodman.ErrorOccurred: 40 ne = errors.New(e.Reason) 41 default: 42 ne = err 43 } 44 fmt.Fprintln(os.Stderr, "Error:", ne.Error()) 45 } 46 } 47 48 func setExitCode(err error) int { 49 cause := errors.Cause(err) 50 switch e := cause.(type) { 51 // For some reason golang won't let me list them with commas so listing them all. 52 case *iopodman.ContainerNotFound: 53 return 1 54 case *iopodman.InvalidState: 55 return 2 56 default: 57 switch e { 58 case define.ErrNoSuchCtr: 59 return 1 60 case define.ErrCtrStateInvalid: 61 return 2 62 } 63 } 64 return exitCode 65 }