github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+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  	"code.cloudfoundry.org/cli/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  }