diff --git a/README.md b/README.md index a39eb59..0cd5772 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ TODO: * [x] Make `golint` part of the build process (and make it pass) * [x] Implement debug output * [x] Flesh out `helm upgrade` until it's capable of working -* [ ] Implement config settings for `upgrade` +* [x] Implement config settings for `upgrade` * [ ] Implement `helm lint` * [ ] Implement `helm delete` * [ ] EKS support diff --git a/internal/run/upgrade.go b/internal/run/upgrade.go index c0c40a8..cff2c70 100644 --- a/internal/run/upgrade.go +++ b/internal/run/upgrade.go @@ -26,6 +26,13 @@ func (u *Upgrade) Execute(_ Config) error { // Prepare gets the Upgrade ready to execute. func (u *Upgrade) Prepare(cfg Config) error { + if u.Chart == "" { + return fmt.Errorf("chart is required") + } + if u.Release == "" { + return fmt.Errorf("release is required") + } + args := []string{"--kubeconfig", cfg.KubeConfig} if cfg.Namespace != "" { diff --git a/internal/run/upgrade_test.go b/internal/run/upgrade_test.go index c1922f4..13b2080 100644 --- a/internal/run/upgrade_test.go +++ b/internal/run/upgrade_test.go @@ -136,6 +136,26 @@ func (suite *UpgradeTestSuite) TestPrepareWithUpgradeFlags() { suite.Require().Nil(err) } +func (suite *UpgradeTestSuite) TestRequiresChartAndRelease() { + // These aren't really expected, but allowing them gives clearer test-failure messages + suite.mockCmd.EXPECT().Stdout(gomock.Any()).AnyTimes() + suite.mockCmd.EXPECT().Stderr(gomock.Any()).AnyTimes() + + u := Upgrade{ + Release: "seth_everman_unskippable_cutscene", + } + + err := u.Prepare(Config{}) + suite.EqualError(err, "chart is required", "Chart should be mandatory") + + u = Upgrade{ + Chart: "billboard_top_zero", + } + + err = u.Prepare(Config{}) + suite.EqualError(err, "release is required", "Release should be mandatory") +} + func (suite *UpgradeTestSuite) TestPrepareDebugFlag() { u := Upgrade{ Chart: "at40",