open.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package cmd
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/fatih/color"
  6. api "github.com/porter-dev/porter/api/client"
  7. "github.com/porter-dev/porter/cli/cmd/config"
  8. "github.com/porter-dev/porter/cli/cmd/utils"
  9. "github.com/spf13/cobra"
  10. )
  11. var openCmd = &cobra.Command{
  12. Use: "open",
  13. Short: "Opens the browser at the currently set Porter instance",
  14. Run: func(cmd *cobra.Command, args []string) {
  15. ctx := cmd.Context()
  16. cliConf, err := config.InitAndLoadConfig()
  17. if err != nil {
  18. color.New(color.FgRed).Fprintf(os.Stderr, "error loading porter config: %s\n", err) //nolint:errcheck,gosec // do not want to change logic of CLI. New linter error
  19. os.Exit(1)
  20. }
  21. client, err := api.NewClientWithConfig(ctx, api.NewClientInput{
  22. BaseURL: fmt.Sprintf("%s/api", cliConf.Host),
  23. BearerToken: cliConf.Token,
  24. CookieFileName: "cookie.json",
  25. })
  26. if err != nil {
  27. _, _ = color.New(color.FgRed).Fprintf(os.Stderr, "error creating porter API client: %v\n", err)
  28. os.Exit(1)
  29. }
  30. user, err := client.AuthCheck(ctx)
  31. if err != nil {
  32. utils.OpenBrowser(fmt.Sprintf("%s/register", cliConf.Host))
  33. return
  34. }
  35. utils.OpenBrowser(fmt.Sprintf("%s/login?email=%s", cliConf.Host, user.Email)) //nolint:errcheck,gosec // do not want to change logic of CLI. New linter error
  36. },
  37. }
  38. func init() {
  39. rootCmd.AddCommand(openCmd)
  40. }