Merge pull request #225 from mumoshu/unmatched-selector-exit-code

feat: exit code 2 on unmatched selectors
This commit is contained in:
KUOKA Yusuke 2018-08-24 11:47:10 +09:00 committed by GitHub
commit 013276f576
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 9 deletions

19
main.go
View File

@ -26,7 +26,9 @@ const (
var Version string var Version string
func configure_logging(c *cli.Context) error { var logger *zap.SugaredLogger
func configureLogging(c *cli.Context) error {
// Valid levels: // Valid levels:
// https://github.com/uber-go/zap/blob/7e7e266a8dbce911a49554b945538c5b950196b8/zapcore/level.go#L126 // https://github.com/uber-go/zap/blob/7e7e266a8dbce911a49554b945538c5b950196b8/zapcore/level.go#L126
logLevel := c.GlobalString("log-level") logLevel := c.GlobalString("log-level")
@ -38,7 +40,7 @@ func configure_logging(c *cli.Context) error {
if err != nil { if err != nil {
return err return err
} }
logger := helmexec.NewLogger(os.Stdout, logLevel) logger = helmexec.NewLogger(os.Stdout, logLevel)
if c.App.Metadata == nil { if c.App.Metadata == nil {
// Auto-initialised in 1.19.0 // Auto-initialised in 1.19.0
// https://github.com/urfave/cli/blob/master/CHANGELOG.md#1190---2016-11-19 // https://github.com/urfave/cli/blob/master/CHANGELOG.md#1190---2016-11-19
@ -88,7 +90,7 @@ func main() {
}, },
} }
app.Before = configure_logging app.Before = configureLogging
app.Commands = []cli.Command{ app.Commands = []cli.Command{
{ {
Name: "repos", Name: "repos",
@ -395,12 +397,12 @@ func eachDesiredStateDo(c *cli.Context, converge func(*state.HelmState, helmexec
} }
allSelectorNotMatched := true allSelectorNotMatched := true
for _, f := range desiredStateFiles { for _, f := range desiredStateFiles {
state, helm, empty, err := loadDesiredStateFromFile(c, f) state, helm, noReleases, err := loadDesiredStateFromFile(c, f)
if err != nil { if err != nil {
return err return err
} }
allSelectorNotMatched = allSelectorNotMatched && empty allSelectorNotMatched = allSelectorNotMatched && noReleases
if empty { if noReleases {
continue continue
} }
errs := converge(state, helm) errs := converge(state, helm)
@ -409,7 +411,8 @@ func eachDesiredStateDo(c *cli.Context, converge func(*state.HelmState, helmexec
} }
} }
if allSelectorNotMatched { if allSelectorNotMatched {
return fmt.Errorf("specified selector did not match any releases in any helmfile") logger.Error("specified selector did not match any releases in any helmfile")
os.Exit(2)
} }
return nil return nil
} }
@ -516,7 +519,7 @@ func loadDesiredStateFromFile(c *cli.Context, file string) (*state.HelmState, he
clean(st, errs) clean(st, errs)
}() }()
return st, helmexec.New(logger, kubeContext), false, nil return st, helmexec.New(logger, kubeContext), len(st.Releases) == 0, nil
} }
func clean(st *state.HelmState, errs []error) error { func clean(st *state.HelmState, errs []error) error {

View File

@ -613,11 +613,11 @@ func (state *HelmState) FilterReleases(labels []string) error {
for _, r := range releaseSet { for _, r := range releaseSet {
filteredReleases = append(filteredReleases, r) filteredReleases = append(filteredReleases, r)
} }
state.Releases = filteredReleases
if len(filteredReleases) == 0 { if len(filteredReleases) == 0 {
state.logger.Debugf("specified selector did not match any releases in %s\n", state.FilePath) state.logger.Debugf("specified selector did not match any releases in %s\n", state.FilePath)
return nil return nil
} }
state.Releases = filteredReleases
return nil return nil
} }