github.com/cli/cli@v1.14.1-0.20210902173923-1af6a669e342/pkg/cmdutil/errors.go (about) 1 package cmdutil 2 3 import ( 4 "errors" 5 6 "github.com/AlecAivazis/survey/v2/terminal" 7 ) 8 9 // FlagError is the kind of error raised in flag processing 10 type FlagError struct { 11 Err error 12 } 13 14 func (fe FlagError) Error() string { 15 return fe.Err.Error() 16 } 17 18 func (fe FlagError) Unwrap() error { 19 return fe.Err 20 } 21 22 // SilentError is an error that triggers exit code 1 without any error messaging 23 var SilentError = errors.New("SilentError") 24 25 // CancelError signals user-initiated cancellation 26 var CancelError = errors.New("CancelError") 27 28 func IsUserCancellation(err error) bool { 29 return errors.Is(err, CancelError) || errors.Is(err, terminal.InterruptErr) 30 } 31 32 func MutuallyExclusive(message string, conditions ...bool) error { 33 numTrue := 0 34 for _, ok := range conditions { 35 if ok { 36 numTrue++ 37 } 38 } 39 if numTrue > 1 { 40 return &FlagError{Err: errors.New(message)} 41 } 42 return nil 43 }