mirror of
https://github.com/containers/podman.git
synced 2025-09-26 16:25:00 +08:00

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>
55 lines
1.6 KiB
Go
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)
|
|
}
|