diff --git a/internal/helm/plan.go b/internal/helm/plan.go index ebd4774..ce2dabe 100644 --- a/internal/helm/plan.go +++ b/internal/helm/plan.go @@ -29,13 +29,10 @@ func NewPlan(cfg Config) (*Plan, error) { p := Plan{ cfg: cfg, runCfg: run.Config{ - Debug: cfg.Debug, - Values: cfg.Values, - StringValues: cfg.StringValues, - ValuesFiles: cfg.ValuesFiles, - Namespace: cfg.Namespace, - Stdout: cfg.Stdout, - Stderr: cfg.Stderr, + Debug: cfg.Debug, + Namespace: cfg.Namespace, + Stdout: cfg.Stdout, + Stderr: cfg.Stderr, }, } @@ -106,6 +103,9 @@ var upgrade = func(cfg Config) []Step { ChartVersion: cfg.ChartVersion, DryRun: cfg.DryRun, Wait: cfg.Wait, + Values: cfg.Values, + StringValues: cfg.StringValues, + ValuesFiles: cfg.ValuesFiles, ReuseValues: cfg.ReuseValues, Timeout: cfg.Timeout, Force: cfg.Force, @@ -133,7 +133,10 @@ var lint = func(cfg Config) []Step { steps = append(steps, depUpdate(cfg)...) } steps = append(steps, &run.Lint{ - Chart: cfg.Chart, + Chart: cfg.Chart, + Values: cfg.Values, + StringValues: cfg.StringValues, + ValuesFiles: cfg.ValuesFiles, }) return steps diff --git a/internal/helm/plan_test.go b/internal/helm/plan_test.go index d4e4e82..a87a7d5 100644 --- a/internal/helm/plan_test.go +++ b/internal/helm/plan_test.go @@ -33,24 +33,18 @@ func (suite *PlanTestSuite) TestNewPlan() { stdout := strings.Builder{} stderr := strings.Builder{} cfg := Config{ - Command: "help", - Debug: false, - Values: "steadfastness,forthrightness", - StringValues: "tensile_strength,flexibility", - ValuesFiles: []string{"/root/price_inventory.yml"}, - Namespace: "outer", - Stdout: &stdout, - Stderr: &stderr, + Command: "help", + Debug: false, + Namespace: "outer", + Stdout: &stdout, + Stderr: &stderr, } runCfg := run.Config{ - Debug: false, - Values: "steadfastness,forthrightness", - StringValues: "tensile_strength,flexibility", - ValuesFiles: []string{"/root/price_inventory.yml"}, - Namespace: "outer", - Stdout: &stdout, - Stderr: &stderr, + Debug: false, + Namespace: "outer", + Stdout: &stdout, + Stderr: &stderr, } stepOne.EXPECT(). @@ -139,6 +133,9 @@ func (suite *PlanTestSuite) TestUpgrade() { ChartVersion: "seventeen", DryRun: true, Wait: true, + Values: "steadfastness,forthrightness", + StringValues: "tensile_strength,flexibility", + ValuesFiles: []string{"/root/price_inventory.yml"}, ReuseValues: true, Timeout: "go sit in the corner", Chart: "billboard_top_100", @@ -159,6 +156,9 @@ func (suite *PlanTestSuite) TestUpgrade() { ChartVersion: cfg.ChartVersion, DryRun: true, Wait: cfg.Wait, + Values: "steadfastness,forthrightness", + StringValues: "tensile_strength,flexibility", + ValuesFiles: []string{"/root/price_inventory.yml"}, ReuseValues: cfg.ReuseValues, Timeout: cfg.Timeout, Force: cfg.Force, @@ -299,14 +299,20 @@ func (suite *PlanTestSuite) TestAddRepos() { func (suite *PlanTestSuite) TestLint() { cfg := Config{ - Chart: "./flow", + Chart: "./flow", + Values: "steadfastness,forthrightness", + StringValues: "tensile_strength,flexibility", + ValuesFiles: []string{"/root/price_inventory.yml"}, } steps := lint(cfg) suite.Equal(1, len(steps)) want := &run.Lint{ - Chart: "./flow", + Chart: "./flow", + Values: "steadfastness,forthrightness", + StringValues: "tensile_strength,flexibility", + ValuesFiles: []string{"/root/price_inventory.yml"}, } suite.Equal(want, steps[0]) } diff --git a/internal/run/config.go b/internal/run/config.go index 4f9b99a..b237f18 100644 --- a/internal/run/config.go +++ b/internal/run/config.go @@ -6,11 +6,8 @@ import ( // Config contains configuration applicable to all helm commands type Config struct { - Debug bool - Values string - StringValues string - ValuesFiles []string - Namespace string - Stdout io.Writer - Stderr io.Writer + Debug bool + Namespace string + Stdout io.Writer + Stderr io.Writer } diff --git a/internal/run/lint.go b/internal/run/lint.go index e2843ca..2ac7361 100644 --- a/internal/run/lint.go +++ b/internal/run/lint.go @@ -6,8 +6,11 @@ import ( // Lint is an execution step that calls `helm lint` when executed. type Lint struct { - Chart string - cmd cmd + Chart string + Values string + StringValues string + ValuesFiles []string + cmd cmd } // Execute executes the `helm lint` command. @@ -32,13 +35,13 @@ func (l *Lint) Prepare(cfg Config) error { args = append(args, "lint") - if cfg.Values != "" { - args = append(args, "--set", cfg.Values) + if l.Values != "" { + args = append(args, "--set", l.Values) } - if cfg.StringValues != "" { - args = append(args, "--set-string", cfg.StringValues) + if l.StringValues != "" { + args = append(args, "--set-string", l.StringValues) } - for _, vFile := range cfg.ValuesFiles { + for _, vFile := range l.ValuesFiles { args = append(args, "--values", vFile) } diff --git a/internal/run/lint_test.go b/internal/run/lint_test.go index 9d683b4..7beb0dd 100644 --- a/internal/run/lint_test.go +++ b/internal/run/lint_test.go @@ -80,16 +80,15 @@ func (suite *LintTestSuite) TestPrepareRequiresChart() { func (suite *LintTestSuite) TestPrepareWithLintFlags() { defer suite.ctrl.Finish() - cfg := Config{ + cfg := Config{} + + l := Lint{ + Chart: "./uk/top_40", Values: "width=5", StringValues: "version=2.0", ValuesFiles: []string{"/usr/local/underrides", "/usr/local/overrides"}, } - l := Lint{ - Chart: "./uk/top_40", - } - command = func(path string, args ...string) cmd { suite.Equal(helmBin, path) suite.Equal([]string{"lint", diff --git a/internal/run/upgrade.go b/internal/run/upgrade.go index dd50527..23297d0 100644 --- a/internal/run/upgrade.go +++ b/internal/run/upgrade.go @@ -12,6 +12,9 @@ type Upgrade struct { ChartVersion string DryRun bool Wait bool + Values string + StringValues string + ValuesFiles []string ReuseValues bool Timeout string Force bool @@ -62,13 +65,13 @@ func (u *Upgrade) Prepare(cfg Config) error { if u.Force { args = append(args, "--force") } - if cfg.Values != "" { - args = append(args, "--set", cfg.Values) + if u.Values != "" { + args = append(args, "--set", u.Values) } - if cfg.StringValues != "" { - args = append(args, "--set-string", cfg.StringValues) + if u.StringValues != "" { + args = append(args, "--set-string", u.StringValues) } - for _, vFile := range cfg.ValuesFiles { + for _, vFile := range u.ValuesFiles { args = append(args, "--values", vFile) } diff --git a/internal/run/upgrade_test.go b/internal/run/upgrade_test.go index aae1af4..5ec02db 100644 --- a/internal/run/upgrade_test.go +++ b/internal/run/upgrade_test.go @@ -91,20 +91,19 @@ func (suite *UpgradeTestSuite) TestPrepareWithUpgradeFlags() { u := Upgrade{ Chart: "hot_ac", Release: "maroon_5_memories", - ChartVersion: "radio_edit", //-version - DryRun: true, //-run - Wait: true, //-wait - ReuseValues: true, //-values - Timeout: "sit_in_the_corner", //-timeout - Force: true, //-force - } - - cfg := Config{ + ChartVersion: "radio_edit", + DryRun: true, + Wait: true, Values: "age=35", StringValues: "height=5ft10in", ValuesFiles: []string{"/usr/local/stats", "/usr/local/grades"}, + ReuseValues: true, + Timeout: "sit_in_the_corner", + Force: true, } + cfg := Config{} + command = func(path string, args ...string) cmd { suite.Equal(helmBin, path) suite.Equal([]string{"upgrade", "--install",