package main import ( "fmt" "log" "os" "strings" "syscall" "golang.org/x/term" "go.yarn.social/client" "git.laidback.moe/shinyoukai/mikuru" ) var ( username string password string ) func init() { mikuru.ConfInit() } func main() { cli, err := client.NewClient(client.WithURI(mikuru.Config.Host)) if err != nil { log.Println("Unable to create client") log.Fatal(err) } fmt.Println("Welcome to Mikuru!") fmt.Printf("%s\n", mikuru.PrintVersion()) signin(cli) } func signin(cli *client.Client) { fmt.Printf("Username: ") fmt.Scanln(&username) if len(username) == 0 { fmt.Println("No value. Bailing out") os.Exit(1) } fmt.Printf("Password: ") data, err := term.ReadPassword(int(syscall.Stdin)) if err != nil { fmt.Printf("Unable to obtain password: %s\n", err) os.Exit(1) } password := string(data) res, err := cli.Login(username, password) if err != nil { fmt.Println("Unable to login") os.Exit(1) } token := strings.Trim(fmt.Sprintf(res.Token), "{}") fmt.Println("Login successful") fmt.Println("Place this token in your configuration file for later use") fmt.Println("Do not share it with anyone, it's classified information") fmt.Printf("token = %v\n", token) }