diff options
author | zhangguanzhang <guanzhangzhang@gmail.com> | 2020-06-12 19:54:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-12 19:54:10 +0800 |
commit | 64eae15aa7905dd49f4a348f6b4765dfb4d9dd91 (patch) | |
tree | 2914c20a2e0e15383da50334cad89b9b85b209a1 /cmd/podman/parse/common.go | |
parent | 3218736cff4b718b8fe855759687cb66f19d6e1e (diff) | |
parent | 8aa5cf3d45998bc92eaafd67ab2a59e3722bade4 (diff) | |
download | podman-64eae15aa7905dd49f4a348f6b4765dfb4d9dd91.tar.gz podman-64eae15aa7905dd49f4a348f6b4765dfb4d9dd91.tar.bz2 podman-64eae15aa7905dd49f4a348f6b4765dfb4d9dd91.zip |
Merge pull request #1 from containers/master
# sync
Diffstat (limited to 'cmd/podman/parse/common.go')
-rw-r--r-- | cmd/podman/parse/common.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/cmd/podman/parse/common.go b/cmd/podman/parse/common.go index 13f425b6d..b3aa88da2 100644 --- a/cmd/podman/parse/common.go +++ b/cmd/podman/parse/common.go @@ -5,6 +5,10 @@ import ( "github.com/spf13/cobra" ) +// TODO: the two functions here are almost identical. It may be worth looking +// into generalizing the two a bit more and share code but time is scarce and +// we only live once. + // CheckAllLatestAndCIDFile checks that --all and --latest are used correctly. // If cidfile is set, also check for the --cidfile flag. func CheckAllLatestAndCIDFile(c *cobra.Command, args []string, ignoreArgLen bool, cidfile bool) error { @@ -55,3 +59,54 @@ func CheckAllLatestAndCIDFile(c *cobra.Command, args []string, ignoreArgLen bool } return nil } + +// CheckAllLatestAndPodIDFile checks that --all and --latest are used correctly. +// If withIDFile is set, also check for the --pod-id-file flag. +func CheckAllLatestAndPodIDFile(c *cobra.Command, args []string, ignoreArgLen bool, withIDFile bool) error { + argLen := len(args) + if c.Flags().Lookup("all") == nil || c.Flags().Lookup("latest") == nil { + if !withIDFile { + return errors.New("unable to lookup values for 'latest' or 'all'") + } else if c.Flags().Lookup("pod-id-file") == nil { + return errors.New("unable to lookup values for 'latest', 'all' or 'pod-id-file'") + } + } + + specifiedAll, _ := c.Flags().GetBool("all") + specifiedLatest, _ := c.Flags().GetBool("latest") + specifiedPodIDFile := false + if pid, _ := c.Flags().GetStringArray("pod-id-file"); len(pid) > 0 { + specifiedPodIDFile = true + } + + if specifiedPodIDFile && (specifiedAll || specifiedLatest) { + return errors.Errorf("--all, --latest and --pod-id-file cannot be used together") + } else if specifiedAll && specifiedLatest { + return errors.Errorf("--all and --latest cannot be used together") + } + + if (argLen > 0) && specifiedAll { + return errors.Errorf("no arguments are needed with --all") + } + + if ignoreArgLen { + return nil + } + + if argLen > 0 { + if specifiedLatest { + return errors.Errorf("no arguments are needed with --latest") + } else if withIDFile && (specifiedLatest || specifiedPodIDFile) { + return errors.Errorf("no arguments are needed with --latest or --pod-id-file") + } + } + + if specifiedPodIDFile { + return nil + } + + if argLen < 1 && !specifiedAll && !specifiedLatest && !specifiedPodIDFile { + return errors.Errorf("you must provide at least one name or id") + } + return nil +} |