summaryrefslogtreecommitdiff
path: root/main.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2021-12-30 16:29:49 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2021-12-30 16:29:49 +0100
commitfe944d23e665edea79dd29213d44a525c72e31b1 (patch)
tree4cd55615bb762d124ffc2d9e62fccdca68eb5ca5 /main.scm
parentMove date parsing to library. (diff)
downloadrss-filter-fe944d23e665edea79dd29213d44a525c72e31b1.tar.gz
rss-filter-fe944d23e665edea79dd29213d44a525c72e31b1.tar.xz
Option handling.
Diffstat (limited to '')
-rwxr-xr-xmain.scm57
1 files changed, 46 insertions, 11 deletions
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)))