action/login/login.go (39 lines of code) (raw):
package login
import (
"fmt"
"github.com/seata/seata-ctl/seata"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"os"
)
var Address string
// LoginCmd 定义 login 子命令
var LoginCmd = &cobra.Command{
Use: "login",
Short: "Login to Seata server",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Attempting to login...")
Address = seata.GetAuth().GetAddress()
err := seata.GetAuth().Login()
if err != nil {
fmt.Println("Login failed!")
os.Exit(1)
} else {
fmt.Printf("Login successful to address: %s\n", Address)
printPrompt(Address)
}
},
}
func init() {
credential := seata.GetAuth()
LoginCmd.PersistentFlags().StringVar(&credential.ServerIP, "ip", "127.0.0.1", "Seata Server IP")
LoginCmd.PersistentFlags().IntVar(&credential.ServerPort, "port", 7091, "Seata Server Admin Port")
LoginCmd.PersistentFlags().StringVar(&credential.Username, "username", "seata", "Username")
LoginCmd.PersistentFlags().StringVar(&credential.Password, "password", "seata", "Password")
viper.BindPFlag("ip", LoginCmd.PersistentFlags().Lookup("ip"))
viper.BindPFlag("port", LoginCmd.PersistentFlags().Lookup("port"))
viper.BindPFlag("username", LoginCmd.PersistentFlags().Lookup("username"))
viper.BindPFlag("password", LoginCmd.PersistentFlags().Lookup("password"))
}
func printPrompt(address string) {
fmt.Printf("%s > ", address)
}