Skip to content

Commit

Permalink
More cleanup for failures on missing commands.
Browse files Browse the repository at this point in the history
Currently in podman if a user specifies a command that does not exist
the tool shows the help information.  This patch changes it to show
information like:

$ ./bin/podman foobar
Error: unrecognized command 'podman foobar'
Try 'podman --help' for more information.
$ ./bin/podman volume foobar
Error: unrecognized command `podman volume foobar`
Try 'podman volume --help' for more information.
$ ./bin/podman container foobar
Error: unrecognized command `podman container foobar`
Try 'podman container --help' for more information.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
  • Loading branch information
rhatdan committed Mar 8, 2019
1 parent 94e89fc commit 181f327
Show file tree
Hide file tree
Showing 11 changed files with 22 additions and 5 deletions.
14 changes: 12 additions & 2 deletions cmd/podman/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package main
import (
"context"
"fmt"
"github.com/spf13/cobra"
"os"
"strings"

Expand All @@ -14,6 +13,7 @@ import (
"github.com/containers/storage"
"github.com/fatih/camelcase"
"github.com/pkg/errors"
"github.com/spf13/cobra"
)

var (
Expand Down Expand Up @@ -67,6 +67,16 @@ func noSubArgs(c *cobra.Command, args []string) error {
return nil
}

func commandRunE() func(*cobra.Command, []string) error {
return func(cmd *cobra.Command, args []string) error {
if len(args) > 0 {
return errors.Errorf("unrecognized command `%s %s`\nTry '%s --help' for more information.", cmd.CommandPath(), args[0], cmd.CommandPath())
} else {
return errors.Errorf("missing command '%s COMMAND'\nTry '%s --help' for more information.", cmd.CommandPath(), cmd.CommandPath())
}
}
}

// getAllOrLatestContainers tries to return the correct list of containers
// depending if --all, --latest or <container-id> is used.
// It requires the Context (c) and the Runtime (runtime). As different
Expand Down Expand Up @@ -537,7 +547,7 @@ Description:
// This blocks the desplaying of the global options. The main podman
// command should not use this.
func UsageTemplate() string {
return `Usage:{{if .Runnable}}
return `Usage:{{if (and .Runnable (not .HasAvailableSubCommands))}}
{{.UseLine}}{{end}}{{if .HasAvailableSubCommands}}
{{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}}
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var (
Short: "Manage Containers",
Long: containerDescription,
TraverseChildren: true,
RunE: commandRunE(),
},
}

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ var (
Use: "generate",
Short: "Generated structured data",
Long: generateDescription,
RunE: commandRunE(),
}
)

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/healthcheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ var healthcheckCommand = cliconfig.PodmanCommand{
Use: "healthcheck",
Short: "Manage Healthcheck",
Long: healthcheckDescription,
RunE: commandRunE(),
},
}

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var (
Use: "image",
Short: "Manage images",
Long: imageDescription,
RunE: commandRunE(),
},
}
imagesSubCommand cliconfig.ImagesValues
Expand Down
4 changes: 1 addition & 3 deletions cmd/podman/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,7 @@ var cmdsNotRequiringRootless = map[*cobra.Command]bool{
var rootCmd = &cobra.Command{
Use: "podman",
Long: "manage pods and images",
RunE: func(cmd *cobra.Command, args []string) error {
return cmd.Help()
},
RunE: commandRunE(),
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
return before(cmd, args)
},
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/play.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ var (
Use: "play",
Short: "Play a pod",
Long: playDescription,
RunE: commandRunE(),
}
)

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ var podCommand = cliconfig.PodmanCommand{
Use: "pod",
Short: "Manage pods",
Long: podDescription,
RunE: commandRunE(),
},
}

Expand Down
1 change: 1 addition & 0 deletions cmd/podman/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ var (
Use: "system",
Short: "Manage podman",
Long: systemDescription,
RunE: commandRunE(),
},
}
)
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/trust.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var (
Use: "trust",
Short: "Manage container image trust policy",
Long: trustDescription,
RunE: commandRunE(),
},
}
)
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ var volumeCommand = cliconfig.PodmanCommand{
Use: "volume",
Short: "Manage volumes",
Long: volumeDescription,
RunE: commandRunE(),
},
}
var volumeSubcommands = []*cobra.Command{
Expand Down

0 comments on commit 181f327

Please sign in to comment.