From 86c10b9efab3f4e431b5f9278708c8ace1563faa Mon Sep 17 00:00:00 2001 From: "Jakob L. Kreuze" Date: Sat, 27 Apr 2019 15:41:06 -0400 Subject: Implement 'post-article --- brisket.hy | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/brisket.hy b/brisket.hy index 039db9e..f42db86 100644 --- a/brisket.hy +++ b/brisket.hy @@ -25,7 +25,7 @@ (import [configparser [ConfigParser]]) (import [os [getcwd getenv makedirs]]) (import [os.path [dirname expanduser join]]) -(import [sys [argv exit stderr]]) +(import [sys [argv exit stderr stdin]]) (import [nntplib [NNTP-SSL]]) (import [subprocess [Popen PIPE]]) @@ -38,6 +38,7 @@ "fetch-posts" "list-groups" "list-posts" + "post-article" "version"]) (defn help [&rest args] @@ -164,6 +165,23 @@ usage: fetch-posts (group [optional]) (article-id [optional])" [group (fetch-group-articles session dest write-to-stdout group)] [True (fetch-all-articles session dest write-to-stdout)]))) +(defn post-article [session &rest args] + "Post an article to the server. + +Reads from stdin if the path of a file is not specified. + +usage: post-article [group] (path [optional])" + (when (= (len args) 0) + (err "usage: post-article [group] (path [optional])") + (return)) + (let [group (first args) + path (if (> (len args) 1) (second args))] + (.group session group) + (if path + (with [f (open path "rb")] + (.post session)) + (.post session (list (map str.encode (.split (.read stdin) "\n"))))))) + (defn make-config [] "Create a default configuration file. -- cgit v1.3