diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-04-21 14:28:09 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-21 14:28:09 -0400 |
commit | 2ed4a0e35f6182b79976979ecf3f3ab9010417bd (patch) | |
tree | 5c720fc48147789d21d798acf04ee0905f4f7be4 /cmd/podman/logout.go | |
parent | 01349990341515b588a42bb8e0b0e765ad98f481 (diff) | |
parent | 0138ecfba047d95466b4dd66295d7800412ff2b6 (diff) | |
download | podman-2ed4a0e35f6182b79976979ecf3f3ab9010417bd.tar.gz podman-2ed4a0e35f6182b79976979ecf3f3ab9010417bd.tar.bz2 podman-2ed4a0e35f6182b79976979ecf3f3ab9010417bd.zip |
Merge pull request #5917 from vrothberg/v2-login-logout
v2: implement log{in,out}
Diffstat (limited to 'cmd/podman/logout.go')
-rw-r--r-- | cmd/podman/logout.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/podman/logout.go b/cmd/podman/logout.go new file mode 100644 index 000000000..77bdc92b4 --- /dev/null +++ b/cmd/podman/logout.go @@ -0,0 +1,57 @@ +package main + +import ( + "os" + + "github.com/containers/common/pkg/auth" + "github.com/containers/image/v5/types" + "github.com/containers/libpod/cmd/podman/registry" + "github.com/containers/libpod/pkg/domain/entities" + "github.com/pkg/errors" + "github.com/spf13/cobra" +) + +var ( + logoutOptions = auth.LogoutOptions{} + logoutCommand = &cobra.Command{ + Use: "logout [flags] REGISTRY", + Short: "Logout of a container registry", + Long: "Remove the cached username and password for the registry.", + RunE: logout, + Args: cobra.MaximumNArgs(1), + Example: `podman logout quay.io + podman logout --authfile dir/auth.json quay.io + podman logout --all`, + } +) + +func init() { + // Note that the local and the remote client behave the same: both + // store credentials locally while the remote client will pass them + // over the wire to the endpoint. + registry.Commands = append(registry.Commands, registry.CliCommand{ + Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, + Command: logoutCommand, + }) + flags := logoutCommand.Flags() + + // Flags from the auth package. + flags.AddFlagSet(auth.GetLogoutFlags(&logoutOptions)) + logoutOptions.Stdin = os.Stdin + logoutOptions.Stdout = os.Stdout +} + +// Implementation of podman-logout. +func logout(cmd *cobra.Command, args []string) error { + sysCtx := types.SystemContext{AuthFilePath: logoutOptions.AuthFile} + + registry := "" + if len(args) > 0 { + if logoutOptions.All { + return errors.New("--all takes no arguments") + } + registry = args[0] + } + + return auth.Logout(&sysCtx, &logoutOptions, registry) +} |