Files
podman/cmd/podman/logout.go
Paul Holzinger 153a975888 shell completion: respect CONTAINERS_REGISTRIES_CONF
Found in debian testing where by default there are no unqualified search
registries installed. As such the test failed as the FIXME said. Now
there is no need for the test to assume anything.

Instead set our own config via CONTAINERS_REGISTRIES_CONF then we can
do exact matches, except that env was not read in the shell completion
code so move some code around to make it read the var in the same way as
podman login/logout.

Signed-off-by: Paul Holzinger <git@holzinger.dev>
2024-12-17 16:29:40 +01:00

55 lines
1.6 KiB
Go

package main
import (
"os"
"github.com/containers/common/pkg/auth"
"github.com/containers/common/pkg/completion"
"github.com/containers/image/v5/types"
"github.com/containers/podman/v5/cmd/podman/common"
"github.com/containers/podman/v5/cmd/podman/registry"
"github.com/spf13/cobra"
)
var (
logoutOptions = auth.LogoutOptions{}
logoutCommand = &cobra.Command{
Use: "logout [options] [REGISTRY]",
Short: "Log out of a container registry",
Long: "Remove the cached username and password for the registry.",
RunE: logout,
Args: cobra.MaximumNArgs(1),
ValidArgsFunction: common.AutocompleteRegistries,
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{
Command: logoutCommand,
})
flags := logoutCommand.Flags()
// Flags from the auth package.
flags.AddFlagSet(auth.GetLogoutFlags(&logoutOptions))
// Add flag completion
completion.CompleteCommandFlags(logoutCommand, auth.GetLogoutFlagsCompletions())
logoutOptions.Stdout = os.Stdout
logoutOptions.AcceptUnspecifiedRegistry = true
logoutOptions.AcceptRepositories = true
}
// Implementation of podman-logout.
func logout(cmd *cobra.Command, args []string) error {
sysCtx := &types.SystemContext{}
common.SetRegistriesConfPath(sysCtx)
return auth.Logout(sysCtx, &logoutOptions, args)
}