github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/command/plugin/shared/handle_error.go (about) 1 package shared 2 3 import ( 4 "encoding/json" 5 6 "code.cloudfoundry.org/cli/actor/pluginaction" 7 "code.cloudfoundry.org/cli/api/plugin/pluginerror" 8 ) 9 10 func HandleError(err error) error { 11 switch e := err.(type) { 12 case *json.SyntaxError: 13 return JSONSyntaxError{Err: e} 14 case pluginerror.RawHTTPStatusError: 15 return DownloadPluginHTTPError{Message: e.Status} 16 case pluginerror.SSLValidationHostnameError: 17 return DownloadPluginHTTPError{Message: e.Error()} 18 case pluginerror.UnverifiedServerError: 19 return DownloadPluginHTTPError{Message: e.Error()} 20 21 case pluginaction.AddPluginRepositoryError: 22 return AddPluginRepositoryError{Name: e.Name, URL: e.URL, Message: e.Message} 23 case pluginaction.GettingPluginRepositoryError: 24 return GettingPluginRepositoryError{Name: e.Name, Message: e.Message} 25 case pluginaction.NoCompatibleBinaryError: 26 return NoCompatibleBinaryError{} 27 case pluginaction.PluginCommandsConflictError: 28 return PluginCommandsConflictError{ 29 PluginName: e.PluginName, 30 PluginVersion: e.PluginVersion, 31 CommandNames: e.CommandNames, 32 CommandAliases: e.CommandAliases, 33 } 34 case pluginaction.PluginInvalidError: 35 return PluginInvalidError{Err: e.Err} 36 case pluginaction.PluginNotFoundError: 37 return PluginNotFoundError{PluginName: e.PluginName} 38 case pluginaction.RepositoryNameTakenError: 39 return RepositoryNameTakenError{Name: e.Name} 40 case pluginaction.RepositoryNotRegisteredError: 41 return RepositoryNotRegisteredError{Name: e.Name} 42 43 case PluginInstallationCancelled: 44 return nil 45 } 46 return err 47 }