Skip to content

Commit b3c463d

Browse files
committed
Make login and password prompt working on windows
1 parent 3944755 commit b3c463d

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

cmd/login.go

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,35 @@
11
package cmd
22

33
import (
4-
"fmt"
54
"regexp"
65

76
"github.com/containerum/chkit/chlib"
87

9-
"os"
8+
"strings"
109

11-
"github.com/containerum/chkit/helpers"
10+
"syscall"
1211

13-
"strings"
12+
"bufio"
13+
"os"
1414

15-
"github.com/howeyc/gopass"
1615
"github.com/spf13/cobra"
16+
"golang.org/x/crypto/ssh/terminal"
1717
)
1818

1919
const emailRegex = "(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)"
2020

2121
var loginCmd = &cobra.Command{
2222
Use: "login",
2323
Short: "Open session and set up token",
24-
PreRun: func(cmd *cobra.Command, args []string) {
25-
// Hidden password input works incorrect in Windows
26-
if helpers.IsWindows() {
27-
if !cmd.Flag("login").Changed || !cmd.Flag("password").Changed {
28-
np.FEEDBACK.Println("Login and password must be specified")
29-
cmd.Usage()
30-
os.Exit(1)
31-
}
32-
}
33-
},
3424
Run: func(cmd *cobra.Command, args []string) {
3525
isValidMail := regexp.MustCompile(emailRegex)
3626
var email string
3727
if !cmd.Flag("login").Changed {
3828
np.FEEDBACK.Print("Enter your email: ")
39-
fmt.Scan(&email)
29+
var err error
30+
email, err = bufio.NewReader(os.Stdin).ReadString('\n')
31+
email = strings.TrimRight(email, "\r\n")
32+
exitOnErr(err)
4033
} else {
4134
email = cmd.Flag("login").Value.String()
4235
}
@@ -47,7 +40,8 @@ var loginCmd = &cobra.Command{
4740
var password string
4841
if !cmd.Flag("password").Changed {
4942
np.FEEDBACK.Print("Enter your password: ")
50-
passwordB, _ := gopass.GetPasswdMasked()
43+
passwordB, err := terminal.ReadPassword(int(syscall.Stdin))
44+
exitOnErr(err)
5145
password = string(passwordB)
5246
} else {
5347
password = cmd.Flag("password").Value.String()

0 commit comments

Comments
 (0)