Files
mikuru/cmd/mikuru-login/main.go
2025-12-30 07:53:26 -03:00

70 lines
1.2 KiB
Go

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)
}