From fe944d23e665edea79dd29213d44a525c72e31b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 30 Dec 2021 16:29:49 +0100 Subject: Option handling. --- main.scm | 57 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 11 deletions(-) (limited to 'main.scm') diff --git a/main.scm b/main.scm index 6a842ae..d38e7ea 100755 --- a/main.scm +++ b/main.scm @@ -21,20 +21,19 @@ ((calp util) :select (path-append)) (feed-handler) - ) - + ((xdg basedir) :prefix xdg-) + ) -(define option-spec - `((output (single-char #\o) - (required? #f) - (value #t)))) -(define ((handle-feed output-directory) feed) +(define ((handle-feed output-directory quiet?) feed) (define response - ;; TODO follow redirects - (http-get (feed-url feed) - #:streaming? #t)) + (begin + (when (not quiet?) + (format (current-error-port) "Fetching ~a~%" (feed-url feed))) + ;; TODO follow redirects + (http-get (feed-url feed) + #:streaming? #t))) (unless (= 200 (response-code response)) (format (current-error-port) "HTTP error ~a" @@ -61,9 +60,45 @@ ;; (for iPad) expects all rss elements to be un-namespaced. (move-to-namespace output '((rss . #f))))))))) + +(define option-spec + `((output (single-char #\o) + (required? #f) + (value #t)) + (help (single-char #\h)) + (config-dir (required? #f) + (value #t)) + (quiet (value #f)))) + + +(define (display-help) + (format #t "Usage: ~a [--config-dir conf-dir] [--output /tmp/output]~%" + (car (command-line)))) + +(define (display-no-config config-dir) + (format #t "Configuration directory [~a] doesn't exist, or is unreadable~%" + config-dir)) + (define (main args) (define opts (getopt-long args option-spec)) (define output-directory (option-ref opts 'output ".")) - (for-each (handle-feed output-directory) (@ (config) feeds))) + (define config-dir + (option-ref opts 'config-dir + (path-append (xdg-config-home) + "rss-filter"))) + + (define quiet? (option-ref opts 'quiet #f)) + + (when (option-ref opts 'help #f) + (display-help) + (exit 0)) + + (unless (file-exists? config-dir) + (display-no-config config-dir) + (exit 1)) + + (add-to-load-path config-dir) + + (for-each (handle-feed output-directory quiet?) (@ (config) feeds))) -- cgit v1.2.3