diff --git a/main.go b/main.go index 013ed5a..a77f2a6 100644 --- a/main.go +++ b/main.go @@ -4,9 +4,11 @@ import ( "fmt" "html/template" "os" + "syscall" "github.com/mlabouardy/nexus-cli/registry" "github.com/urfave/cli" + "golang.org/x/crypto/ssh/terminal" ) const ( @@ -111,7 +113,11 @@ func setNexusCredentials(c *cli.Context) error { fmt.Print("Enter Nexus Username: ") fmt.Scan(&username) fmt.Print("Enter Nexus Password: ") - fmt.Scan(&password) + bytePassword, err := terminal.ReadPassword(int(syscall.Stdin)) + if err != nil { + return fmt.Errorf("Could not read password from terminal: %v", err) + } + password = string(bytePassword) data := struct { Host string diff --git a/registry/registry.go b/registry/registry.go index 8f22558..610bb3e 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -4,9 +4,11 @@ import ( "encoding/json" "errors" "fmt" - "github.com/BurntSushi/toml" + "html" "net/http" "os" + + "github.com/BurntSushi/toml" ) const ACCEPT_HEADER = "application/vnd.docker.distribution.manifest.v2+json" @@ -51,6 +53,7 @@ func NewRegistry() (Registry, error) { if _, err := toml.DecodeFile(CREDENTIALS_FILE, &r); err != nil { return r, err } + r.Password = html.UnescapeString(r.Password) return r, nil }