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  }