diff --git a/main.go b/main.go index e845fb4..e0cdaff 100644 --- a/main.go +++ b/main.go @@ -58,6 +58,16 @@ func main() { Usage: "Skip TLS verification", EnvVar: "PLUGIN_SKIP_TLS_VERIFY,SKIP_TLS_VERIFY", }, + cli.BoolFlag{ + Name: "debug", + Usage: "Debug", + EnvVar: "PLUGIN_DEBUG,DEBUG", + }, + cli.BoolFlag{ + Name: "dry-run", + Usage: "Helm dry-run", + EnvVar: "PLUGIN_DRY_RUN,DRY_RUN", + }, } if err := app.Run(os.Args); err != nil { logrus.Fatal(err) diff --git a/plugin.go b/plugin.go index 2d7229c..b80c1e4 100644 --- a/plugin.go +++ b/plugin.go @@ -24,6 +24,8 @@ type ( Release string `json:"release"` Chart string `json:"chart"` Values string `json:"values"` + Debug bool `json:"debug"` + DryRun bool `json:"dry_run"` } // Plugin default Plugin struct { @@ -31,8 +33,29 @@ type ( } ) +func setHelmCommand(p *Plugin) { + upgrade := make([]string, 2) + upgrade[0] = "upgrade" + upgrade[1] = "--install" + if p.Config.Release != "" { + upgrade = append(upgrade, p.Config.Release) + } + upgrade = append(upgrade, p.Config.Chart) + if p.Config.Debug { + upgrade = append(upgrade, "--debug") + } + if p.Config.Values != "" { + upgrade = append(upgrade, "--set") + upgrade = append(upgrade, p.Config.Values) + } + if p.Config.DryRun { + upgrade = append(upgrade, "--dry-run") + } + p.Config.HelmCommand = upgrade +} + // Exec default method -func (p Plugin) Exec() error { +func (p *Plugin) Exec() error { if p.Config.APIServer == "" { return fmt.Errorf("Error: API Server is needed to deploy.") } @@ -47,20 +70,9 @@ func (p Plugin) Exec() error { if err != nil { return fmt.Errorf("Error running helm comand: " + strings.Join(init[:], " ")) } - upgrade := make([]string, 7) - upgrade[0] = "upgrade" - upgrade[1] = "--install" - upgrade[2] = p.Config.Release - upgrade[3] = p.Config.Chart - upgrade[4] = "--debug" - if p.Config.Values != "" { - upgrade[5] = "--set" - upgrade[6] = p.Config.Values - } - - err = runCommand(upgrade) + err = runCommand(p.Config.HelmCommand) if err != nil { - return fmt.Errorf("Error running helm comand: " + strings.Join(upgrade[:], " ")) + return fmt.Errorf("Error running helm comand: " + strings.Join(p.Config.HelmCommand[:], " ")) } return nil } diff --git a/plugin_test.go b/plugin_test.go index a24229b..b62fe9c 100644 --- a/plugin_test.go +++ b/plugin_test.go @@ -1,6 +1,9 @@ package main -import "testing" +import ( + "fmt" + "testing" +) func TestInitialiseKubeconfig(t *testing.T) { @@ -21,3 +24,22 @@ func TestInitialiseKubeconfig(t *testing.T) { initialiseKubeconfig(&plugin.Config, "kubeconfig", "config3.test") } + +func TestGetHelmCommand(t *testing.T) { + plugin := &Plugin{ + Config: Config{ + APIServer: "http://myapiserver", + Token: "secret-token", + HelmCommand: nil, + Namespace: "default", + SkipTLSVerify: true, + Debug: true, + DryRun: true, + Chart: "./chart/test", + Release: "test-release", + }, + } + setHelmCommand(plugin) + fmt.Println(plugin.Config.HelmCommand) + +}