Skip to content

Commit

Permalink
Merge pull request #1540 from estroz/chore/init-remove-logfatal
Browse files Browse the repository at this point in the history
pkg/cli: use cmd error idiom for 'init' and plugin keys in cmd errors
  • Loading branch information
k8s-ci-robot committed Jun 1, 2020
2 parents 0ff2828 + 9ab1587 commit 6480d5a
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
4 changes: 2 additions & 2 deletions pkg/cli/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ func (c cli) bindCreateAPI(ctx plugin.Context, cmd *cobra.Command) {
tmpGetter, isGetter := p.(plugin.CreateAPIPluginGetter)
if isGetter {
if getter != nil {
err := fmt.Errorf("duplicate API creation plugins for project version %q: %s, %s",
c.projectVersion, getter.Name(), p.Name())
err := fmt.Errorf("duplicate API creation plugins for project version %q (%s, %s), "+
"use a more specific plugin key", c.projectVersion, plugin.KeyFor(getter), plugin.KeyFor(p))
cmdErr(cmd, err)
return
}
Expand Down
6 changes: 6 additions & 0 deletions pkg/cli/cmd_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ func cmdErr(cmd *cobra.Command, err error) {
cmd.RunE = errCmdFunc(err)
}

// cmdErrNoHelp calls cmdErr(cmd, err) then turns cmd's usage off.
func cmdErrNoHelp(cmd *cobra.Command, err error) {
cmdErr(cmd, err)
cmd.SilenceUsage = true
}

// errCmdFunc returns a cobra RunE function that returns the provided error
func errCmdFunc(err error) func(*cobra.Command, []string) error {
return func(*cobra.Command, []string) error {
Expand Down
13 changes: 9 additions & 4 deletions pkg/cli/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,18 +121,23 @@ func (c cli) bindInit(ctx plugin.Context, cmd *cobra.Command) {
tmpGetter, isGetter := p.(plugin.InitPluginGetter)
if isGetter {
if getter != nil {
log.Fatalf("duplicate initialization plugins for project version %q: %s, %s",
c.projectVersion, getter.Name(), p.Name())
err := fmt.Errorf("duplicate initialization plugins for project version %q (%s, %s), "+
"use a more specific plugin key", c.projectVersion, plugin.KeyFor(getter), plugin.KeyFor(p))
cmdErrNoHelp(cmd, err)
return
}
getter = tmpGetter
}
}
if getter == nil {
var err error
if c.cliPluginKey == "" {
log.Fatalf("project version %q does not support an initialization plugin", c.projectVersion)
err = fmt.Errorf("project version %q does not support an initialization plugin", c.projectVersion)
} else {
log.Fatalf("plugin %q does not support an initialization plugin", c.cliPluginKey)
err = fmt.Errorf("plugin %q does not support an initialization plugin", c.cliPluginKey)
}
cmdErrNoHelp(cmd, err)
return
}

cfg := internalconfig.New(internalconfig.DefaultPath)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cli/webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ func (c cli) bindCreateWebhook(ctx plugin.Context, cmd *cobra.Command) {
tmpGetter, isGetter := p.(plugin.CreateWebhookPluginGetter)
if isGetter {
if getter != nil {
err := fmt.Errorf("duplicate webhook creation plugins for project version %q: %s, %s",
c.projectVersion, getter.Name(), p.Name())
err := fmt.Errorf("duplicate webhook creation plugins for project version %q (%s, %s), "+
"use a more specific plugin key", c.projectVersion, plugin.KeyFor(getter), plugin.KeyFor(p))
cmdErr(cmd, err)
return
}
Expand Down

0 comments on commit 6480d5a

Please sign in to comment.