Files
yuki/login.go
Shin'ya Minazuki 3def8e4eee Update go-writefreely to v1.4.0
As it was a breaking change, all the code using it has been
modified accordingly.

That also means less lines of code for doing the same thing, too.

Signed-off-by: Shin'ya Minazuki <shinyoukai@laidback.moe>
2026-01-22 12:26:57 -03:00

72 lines
1.2 KiB
Go

package main
import (
"bufio"
"fmt"
"log"
"os"
"syscall"
"code.laidback.moe/go-writefreely"
"github.com/spf13/cobra"
"golang.org/x/term"
)
var loginCmd = &cobra.Command{
Use: "login",
Short: "Login to a WriteFreely instance",
Run: func(cmd *cobra.Command, args []string) {
DoLogin(args)
},
}
func init() {
ConfInit()
rootCmd.AddCommand(loginCmd)
}
// DoLogin creates a new client, passing the host defined
// in the configuration file as writefreely.InstanceURL,
// and authenticates to the instance.
func DoLogin(args []string) {
var user, pass string
c := writefreely.NewClient(Config.Host)
reader := bufio.NewReader(os.Stdin)
fmt.Print("Username: ")
user, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
fmt.Print("Password: ")
data, err := term.ReadPassword(int(syscall.Stdin))
if err != nil {
log.Fatal(err)
}
pass = string(data)
u, err := c.Login(user, pass)
if err != nil {
log.Fatal(err)
}
cfg, err := os.UserConfigDir()
if err != nil {
log.Fatal(err)
}
cfgPath := cfg + "/yuki.ini"
f, err := os.OpenFile(cfgPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
log.Fatal(err)
}
defer f.Close()
f.WriteString("token = " + u.AccessToken + "\n")
log.Println("Login successful")
}