summaryrefslogtreecommitdiff
path: root/cmd/podman/images
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2020-06-23 08:10:08 -0600
committerEd Santiago <santiago@redhat.com>2020-06-23 14:17:48 -0600
commit6864a5547a774d19a7ccb9d50a7799b721fb66ef (patch)
tree1a74a2005e9fc1da7d0aa89508233cd4ba186bbc /cmd/podman/images
parent81f4204e4e0c8074e2709bd7c4db3f1f61d1b351 (diff)
downloadpodman-6864a5547a774d19a7ccb9d50a7799b721fb66ef.tar.gz
podman-6864a5547a774d19a7ccb9d50a7799b721fb66ef.tar.bz2
podman-6864a5547a774d19a7ccb9d50a7799b721fb66ef.zip
BATS tests: new too-many-arguments test
...plus a few others. And fixes to actual parsing. If a command's usage message includes '...' in the argument list, assume it can take unlimited arguments. Nothing we can check. For all others, though, the ALL-CAPS part on the right-hand side of the usage message will define an upper bound on the number of arguments accepted by the command. So in our 'podman --help' test, generate N+1 args and run that command. We expect a 125 exit status and a suitably helpful error message. Not all podman commands or subcommands were checking, so I fixed that. And, fixed some broken usage messages (all-caps FLAGS, and '[flags]' at the end of 'ARGS'). Add new checks to the help test to prevent those in the future. Plus a little refactoring/cleanup where necessary. Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'cmd/podman/images')
-rw-r--r--cmd/podman/images/build.go1
-rw-r--r--cmd/podman/images/inspect.go2
-rw-r--r--cmd/podman/images/list.go2
-rw-r--r--cmd/podman/images/push.go19
-rw-r--r--cmd/podman/images/save.go4
-rw-r--r--cmd/podman/images/trust_show.go1
6 files changed, 11 insertions, 18 deletions
diff --git a/cmd/podman/images/build.go b/cmd/podman/images/build.go
index 23bfcab79..dfde896a1 100644
--- a/cmd/podman/images/build.go
+++ b/cmd/podman/images/build.go
@@ -45,6 +45,7 @@ var (
Long: buildDescription,
TraverseChildren: true,
RunE: build,
+ Args: cobra.MaximumNArgs(1),
Example: `podman build .
podman build --creds=username:password -t imageName -f Containerfile.simple .
podman build --layers --force-rm --tag imageName .`,
diff --git a/cmd/podman/images/inspect.go b/cmd/podman/images/inspect.go
index f6a10ba44..a1a9e91eb 100644
--- a/cmd/podman/images/inspect.go
+++ b/cmd/podman/images/inspect.go
@@ -10,7 +10,7 @@ import (
var (
// Command: podman image _inspect_
inspectCmd = &cobra.Command{
- Use: "inspect [flags] IMAGE",
+ Use: "inspect [flags] IMAGE [IMAGE...]",
Short: "Display the configuration of an image",
Long: `Displays the low-level information of an image identified by name or ID.`,
RunE: inspectExec,
diff --git a/cmd/podman/images/list.go b/cmd/podman/images/list.go
index b7a8b8911..de7cca40d 100644
--- a/cmd/podman/images/list.go
+++ b/cmd/podman/images/list.go
@@ -32,7 +32,7 @@ type listFlagType struct {
var (
// Command: podman image _list_
listCmd = &cobra.Command{
- Use: "list [FLAGS] [IMAGE]",
+ Use: "list [flags] [IMAGE]",
Aliases: []string{"ls"},
Args: cobra.MaximumNArgs(1),
Short: "List images in local storage",
diff --git a/cmd/podman/images/push.go b/cmd/podman/images/push.go
index a1614dc7a..7af2d9343 100644
--- a/cmd/podman/images/push.go
+++ b/cmd/podman/images/push.go
@@ -29,10 +29,11 @@ var (
// Command: podman push
pushCmd = &cobra.Command{
- Use: "push [flags] SOURCE DESTINATION",
+ Use: "push [flags] SOURCE [DESTINATION]",
Short: "Push an image to a specified destination",
Long: pushDescription,
RunE: imagePush,
+ Args: cobra.RangeArgs(1, 2),
Example: `podman push imageID docker://registry.example.com/repository:tag
podman push imageID oci-archive:/path/to/layout:image:tag`,
}
@@ -45,6 +46,7 @@ var (
Short: pushCmd.Short,
Long: pushCmd.Long,
RunE: pushCmd.RunE,
+ Args: pushCmd.Args,
Example: `podman image push imageID docker://registry.example.com/repository:tag
podman image push imageID oci-archive:/path/to/layout:image:tag`,
}
@@ -96,19 +98,8 @@ func pushFlags(flags *pflag.FlagSet) {
// imagePush is implement the command for pushing images.
func imagePush(cmd *cobra.Command, args []string) error {
- var source, destination string
- switch len(args) {
- case 1:
- source = args[0]
- destination = args[0]
- case 2:
- source = args[0]
- destination = args[1]
- case 0:
- fallthrough
- default:
- return errors.New("push requires at least one image name, or optionally a second to specify a different destination")
- }
+ source := args[0]
+ destination := args[len(args)-1]
// TLS verification in c/image is controlled via a `types.OptionalBool`
// which allows for distinguishing among set-true, set-false, unspecified
diff --git a/cmd/podman/images/save.go b/cmd/podman/images/save.go
index 56953e41c..9b03c1383 100644
--- a/cmd/podman/images/save.go
+++ b/cmd/podman/images/save.go
@@ -23,8 +23,8 @@ var (
saveDescription = `Save an image to docker-archive or oci-archive on the local machine. Default is docker-archive.`
saveCommand = &cobra.Command{
- Use: "save [flags] IMAGE",
- Short: "Save image to an archive",
+ Use: "save [flags] IMAGE [IMAGE...]",
+ Short: "Save image(s) to an archive",
Long: saveDescription,
RunE: save,
Args: func(cmd *cobra.Command, args []string) error {
diff --git a/cmd/podman/images/trust_show.go b/cmd/podman/images/trust_show.go
index 23ee6c709..dbaa800a4 100644
--- a/cmd/podman/images/trust_show.go
+++ b/cmd/podman/images/trust_show.go
@@ -18,6 +18,7 @@ var (
Short: "Display trust policy for the system",
Long: showTrustDescription,
RunE: showTrust,
+ Args: cobra.MaximumNArgs(1),
Example: "",
}
)