forked from databus23/helm-diff
/
helpers.go
93 lines (76 loc) · 2.21 KB
/
helpers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package cmd
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"strings"
flag "github.com/spf13/pflag"
"k8s.io/client-go/util/homedir"
"k8s.io/helm/pkg/helm"
helm_env "k8s.io/helm/pkg/helm/environment"
"k8s.io/helm/pkg/tlsutil"
)
const (
tlsCaCertDefault = "$HELM_HOME/ca.pem"
tlsCertDefault = "$HELM_HOME/cert.pem"
tlsKeyDefault = "$HELM_HOME/key.pem"
helm2TestSuccessHook = "test-success"
helm3TestHook = "test"
)
var (
settings helm_env.EnvSettings
// DefaultHelmHome to hold default home path of .helm dir
DefaultHelmHome = filepath.Join(homedir.HomeDir(), ".helm")
)
func isHelm3() bool {
return os.Getenv("TILLER_HOST") == ""
}
func isDebug() bool {
return os.Getenv("HELM_DEBUG") == "true"
}
func debugPrint(format string, a ...interface{}) {
if isDebug() {
fmt.Printf(format+"\n", a...)
}
}
func addCommonCmdOptions(f *flag.FlagSet) {
settings.AddFlagsTLS(f)
settings.InitTLS(f)
f.StringVar((*string)(&settings.Home), "home", DefaultHelmHome, "location of your Helm config. Overrides $HELM_HOME")
}
func createHelmClient() helm.Interface {
options := []helm.Option{helm.Host(os.Getenv("TILLER_HOST")), helm.ConnectTimeout(int64(30))}
if settings.TLSVerify || settings.TLSEnable {
tlsopts := tlsutil.Options{
ServerName: settings.TLSServerName,
KeyFile: settings.TLSKeyFile,
CertFile: settings.TLSCertFile,
InsecureSkipVerify: true,
}
if settings.TLSVerify {
tlsopts.CaCertFile = settings.TLSCaCertFile
tlsopts.InsecureSkipVerify = false
}
tlscfg, err := tlsutil.ClientConfig(tlsopts)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(2)
}
options = append(options, helm.WithTLS(tlscfg))
}
return helm.NewClient(options...)
}
func expandTLSPaths() {
settings.TLSCaCertFile = os.ExpandEnv(settings.TLSCaCertFile)
settings.TLSCertFile = os.ExpandEnv(settings.TLSCertFile)
settings.TLSKeyFile = os.ExpandEnv(settings.TLSKeyFile)
}
func outputWithRichError(cmd *exec.Cmd) ([]byte, error) {
debugPrint("Executing %s", strings.Join(cmd.Args, " "))
output, err := cmd.Output()
if exitError, ok := err.(*exec.ExitError); ok {
return output, fmt.Errorf("%s: %s", exitError.Error(), string(exitError.Stderr))
}
return output, err
}