helm.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package commands
  2. import (
  3. "context"
  4. "fmt"
  5. "os"
  6. "os/exec"
  7. api "github.com/porter-dev/porter/api/client"
  8. "github.com/porter-dev/porter/api/types"
  9. "github.com/porter-dev/porter/cli/cmd/config"
  10. "github.com/spf13/cobra"
  11. )
  12. func registerCommand_Helm() *cobra.Command {
  13. helmCmd := &cobra.Command{
  14. Use: "helm",
  15. Short: "Use helm to interact with a Porter cluster",
  16. Run: func(cmd *cobra.Command, args []string) {
  17. err := checkLoginAndRunWithConfig(cmd, args, runHelm)
  18. if err != nil {
  19. os.Exit(1)
  20. }
  21. },
  22. }
  23. return helmCmd
  24. }
  25. func runHelm(ctx context.Context, _ *types.GetAuthenticatedUserResponse, client api.Client, cliConf config.CLIConfig, currentProfile string, featureFlags config.FeatureFlags, cmd *cobra.Command, args []string) error {
  26. _, err := exec.LookPath("helm")
  27. if err != nil {
  28. return fmt.Errorf("error finding helm: %w", err)
  29. }
  30. tmpFile, err := downloadTempKubeconfig(ctx, client, cliConf)
  31. if err != nil {
  32. return err
  33. }
  34. defer func() {
  35. os.Remove(tmpFile)
  36. }()
  37. os.Setenv("KUBECONFIG", tmpFile)
  38. execCommand := exec.Command("helm", args...)
  39. execCommand.Stdout = os.Stdout
  40. execCommand.Stderr = os.Stderr
  41. err = execCommand.Run()
  42. if err != nil {
  43. return fmt.Errorf("error running helm: %w", err)
  44. }
  45. return nil
  46. }