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