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