-
Notifications
You must be signed in to change notification settings - Fork 4
/
kubectl.go
65 lines (53 loc) · 1.38 KB
/
kubectl.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
package kubectl
import (
"context"
"fmt"
"os"
"path/filepath"
"runtime"
"github.com/riita10069/ket/pkg/cli"
)
type Kubectl struct {
name string
version string
binDir string
url string
kubeConfigPath string
}
func NewKubectl(version, binDir, kubeConfigFilePath string) *Kubectl {
return &Kubectl{
version: version,
name: "kubectl",
binDir: binDir,
url: fmt.Sprintf("https://storage.googleapis.com/kubernetes-release/release/v%s/bin/%s/%s/kubectl", version, runtime.GOOS, runtime.GOARCH),
kubeConfigPath: kubeConfigFilePath,
}
}
func (k *Kubectl) Version() string {
return k.version
}
func (k *Kubectl) Name() string {
return k.name
}
func (k *Kubectl) Path() string {
return filepath.Join(k.binDir, k.name)
}
func (k *Kubectl) Dir() string {
return k.binDir
}
func (k *Kubectl) URL() string {
return k.url
}
func (k *Kubectl) Envs() []string {
return []string{
"KUBECONFIG=" + k.kubeConfigPath,
}
}
// Execute If OutPut is necessary, use Capture. Execute uses os.Stderr.
func (k *Kubectl) Execute(ctx context.Context, args []string) error {
return cli.Run(ctx, k, args, os.Stdout, os.Stderr)
}
// Capture execute command with returning outs as string.
func (k *Kubectl) Capture(ctx context.Context, args []string) (stdout string, stderr string, err error) {
return cli.Capture(ctx, k, args)
}