errors.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package cmd
  2. import (
  3. "context"
  4. "strings"
  5. "github.com/fatih/color"
  6. "github.com/porter-dev/porter/cli/cmd/api"
  7. )
  8. func checkLoginAndRun(args []string, runner func(user *api.AuthCheckResponse, client *api.Client, args []string) error) error {
  9. client := api.NewClient(getHost()+"/api", "cookie.json")
  10. user, err := client.AuthCheck(context.Background())
  11. if err != nil {
  12. red := color.New(color.FgRed)
  13. if strings.Contains(err.Error(), "403") {
  14. red.Print("You are not logged in. Log in using \"porter auth login\"\n")
  15. return nil
  16. } else if strings.Contains(err.Error(), "connection refused") {
  17. red.Printf("Unable to connect to the Porter server at %s\n", getHost())
  18. red.Print("To set a different host, run \"porter config set-host [HOST]\"\n")
  19. red.Print("To start a local server, run \"porter server start\"\n")
  20. return nil
  21. }
  22. red.Printf("Error: %v\n", err.Error())
  23. return err
  24. }
  25. err = runner(user, client, args)
  26. if err != nil {
  27. red := color.New(color.FgRed)
  28. if strings.Contains(err.Error(), "403") {
  29. red.Print("You do not have the necessary permissions to view this resource")
  30. return nil
  31. } else if strings.Contains(err.Error(), "connection refused") {
  32. red.Printf("Unable to connect to the Porter server at %s\n", getHost())
  33. red.Print("To set a different host, run \"porter config set-host [HOST]\"")
  34. red.Print("To start a local server, run \"porter server start\"")
  35. return nil
  36. }
  37. red.Printf("Error: %v\n", err.Error())
  38. return err
  39. }
  40. return nil
  41. }