diff options
author | TomSweeneyRedHat <tsweeney@redhat.com> | 2018-02-03 18:25:18 -0500 |
---|---|---|
committer | TomSweeneyRedHat <tsweeney@redhat.com> | 2018-02-06 09:29:23 -0500 |
commit | bb37c11651b9a01ff9b5191eb5072cdf0db83a51 (patch) | |
tree | 3854db36aecff70a103dd176d97062035a7415e8 /pkg/util | |
parent | bf00c976dd7509b7d84d1fa5254f1ac26fc494e5 (diff) | |
download | podman-bb37c11651b9a01ff9b5191eb5072cdf0db83a51.tar.gz podman-bb37c11651b9a01ff9b5191eb5072cdf0db83a51.tar.bz2 podman-bb37c11651b9a01ff9b5191eb5072cdf0db83a51.zip |
Change un/pwd handling to match Buildah's
Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
Diffstat (limited to 'pkg/util')
-rw-r--r-- | pkg/util/utils.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pkg/util/utils.go b/pkg/util/utils.go new file mode 100644 index 000000000..9a93021e4 --- /dev/null +++ b/pkg/util/utils.go @@ -0,0 +1,46 @@ +package util + +import ( + "fmt" + "strings" + + "github.com/containers/image/types" + "github.com/pkg/errors" + "golang.org/x/crypto/ssh/terminal" +) + +// Helper function to determine the username/password passed +// in the creds string. It could be either or both. +func parseCreds(creds string) (string, string) { + if creds == "" { + return "", "" + } + up := strings.SplitN(creds, ":", 2) + if len(up) == 1 { + return up[0], "" + } + return up[0], up[1] +} + +// ParseRegistryCreds takes a credentials string in the form USERNAME:PASSWORD +// and returns a DockerAuthConfig +func ParseRegistryCreds(creds string) (*types.DockerAuthConfig, error) { + username, password := parseCreds(creds) + if username == "" { + fmt.Print("Username: ") + fmt.Scanln(&username) + } + if password == "" { + fmt.Print("Password: ") + termPassword, err := terminal.ReadPassword(0) + if err != nil { + return nil, errors.Wrapf(err, "could not read password from terminal") + } + password = string(termPassword) + } + + return &types.DockerAuthConfig{ + Username: username, + Password: password, + }, nil +} |