diff options
| -rw-r--r-- | brisket.hy | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -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. |