11package cmd
22
33import (
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
1919const emailRegex = "(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\ .[a-zA-Z0-9-.]+$)"
2020
2121var 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