Files
yuki/post.go
2026-01-22 16:46:37 -03:00

99 lines
2.4 KiB
Go

package main
import (
"log"
"code.laidback.moe/go-writefreely"
"github.com/spf13/cobra"
"github.com/tj/go-editor"
)
var postCmd = &cobra.Command{
Use: "post",
Short: "Create a new post on the WriteFreely instance",
Aliases: []string{"new"},
Run: func(cmd *cobra.Command, args []string) {
collection, err := cmd.Flags().GetString("collection")
if err != nil {
log.Fatal("Couldn't get the collection flag")
}
font, err := cmd.Flags().GetString("font")
if err != nil {
log.Fatal("Couldn't get the font flag")
}
lang, err := cmd.Flags().GetString("lang")
if err != nil {
log.Fatal("Couldn't get the language flag")
}
rtl, err := cmd.Flags().GetBool("rtl")
if err != nil {
log.Fatal("Couldn't get the right-to-left flag")
}
title, err := cmd.Flags().GetString("title")
if err != nil {
log.Fatal("Couldn't get the title flag")
}
Post(collection, font, lang, rtl, title, args)
},
}
func init() {
ConfInit()
rootCmd.AddCommand(postCmd)
postCmd.Flags().StringP("collection", "b", "", "Location for the post (default is Drafts if unset)")
postCmd.Flags().StringP("font", "f", "mono", "Which font to use for presentation (e.g. sans, serif, wrap, code)")
postCmd.Flags().StringP("lang", "l", "en", "ISO 639-1 language code (e.g. en or de)")
postCmd.Flags().BoolP("rtl", "r", false, "Whether to use right-to-left writing style (common in Middle Eastern languages)")
postCmd.Flags().StringP("title", "t", "", "Title for the entry")
if err := postCmd.MarkFlagRequired("title"); err != nil { panic(err) }
}
// Post allows an user to publish to a WriteFreely instance
func Post(collection, font, lang string, rtl bool, title string, args []string) {
var err error
var w *writefreely.Post
if rtl {
log.Println("Using right-to-left writing style")
}
data, err := editor.Read()
if err != nil {
log.Fatal("Unable to read content from editor")
}
post := string(data)
c := writefreely.NewClient(Config.Host)
c.SetToken(Config.Token)
if len(collection) == 0 {
w, err = c.CreatePost(&writefreely.PostParams{
Title: title,
Content: post,
Font: font,
Language: &lang,
IsRTL: &rtl,
})
} else {
w, err = c.CreatePost(&writefreely.PostParams{
Title: title,
Content: post,
Font: font,
Collection: collection,
Language: &lang,
IsRTL: &rtl,
})
}
if err != nil {
log.Fatal(err)
}
log.Println("Post created")
log.Printf("%s/%s\n", Config.Host, w.ID)
}