feat: ability to exit zero with no releases match selector (#618)
- Change exit code from 2 to 3 when helmfiles have no releases that match a selector - Introduces new flag `--allow-no-matching-release` to exit 0 when no releases match a selector. Resolves: #597
This commit is contained in:
parent
f6264bfa9d
commit
4a5996d083
12
cmd/cmd.go
12
cmd/cmd.go
|
|
@ -27,7 +27,7 @@ func VisitAllDesiredStates(c *cli.Context, converge func(*state.HelmState, helme
|
||||||
|
|
||||||
err = a.VisitDesiredStates(fileOrDir, a.Selectors, convergeWithHelmBinary)
|
err = a.VisitDesiredStates(fileOrDir, a.Selectors, convergeWithHelmBinary)
|
||||||
|
|
||||||
return toCliError(err)
|
return toCliError(c, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitAppEntry(c *cli.Context, reverse bool) (*app.App, string, error) {
|
func InitAppEntry(c *cli.Context, reverse bool) (*app.App, string, error) {
|
||||||
|
|
@ -76,14 +76,18 @@ func FindAndIterateOverDesiredStatesUsingFlagsWithReverse(c *cli.Context, revers
|
||||||
|
|
||||||
err = a.VisitDesiredStatesWithReleasesFiltered(fileOrDir, convergeWithHelmBinary)
|
err = a.VisitDesiredStatesWithReleasesFiltered(fileOrDir, convergeWithHelmBinary)
|
||||||
|
|
||||||
return toCliError(err)
|
return toCliError(c, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func toCliError(err error) error {
|
func toCliError(c *cli.Context, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
switch e := err.(type) {
|
switch e := err.(type) {
|
||||||
case *app.NoMatchingHelmfileError:
|
case *app.NoMatchingHelmfileError:
|
||||||
return cli.NewExitError(e.Error(), 2)
|
noMatchingExitCode := 3
|
||||||
|
if c.GlobalBool("allow-no-matching-release") {
|
||||||
|
noMatchingExitCode = 0
|
||||||
|
}
|
||||||
|
return cli.NewExitError(e.Error(), noMatchingExitCode)
|
||||||
case *app.Error:
|
case *app.Error:
|
||||||
return cli.NewExitError(e.Error(), e.Code())
|
return cli.NewExitError(e.Error(), e.Code())
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
4
main.go
4
main.go
|
|
@ -82,6 +82,10 @@ func main() {
|
||||||
--selector tier=frontend,tier!=proxy --selector tier=backend. Will match all frontend, non-proxy releases AND all backend releases.
|
--selector tier=frontend,tier!=proxy --selector tier=backend. Will match all frontend, non-proxy releases AND all backend releases.
|
||||||
The name of a release can be used as a label. --selector name=myrelease`,
|
The name of a release can be used as a label. --selector name=myrelease`,
|
||||||
},
|
},
|
||||||
|
cli.BoolFlag{
|
||||||
|
Name: "allow-no-matching-release",
|
||||||
|
Usage: `Do not exit with an error code if the provided selector has no matching releases.`,
|
||||||
|
},
|
||||||
cli.BoolFlag{
|
cli.BoolFlag{
|
||||||
Name: "interactive, i",
|
Name: "interactive, i",
|
||||||
Usage: "Request confirmation before attempting to modify clusters",
|
Usage: "Request confirmation before attempting to modify clusters",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue