X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=tt.rkt;h=be88095464a2edae575c79e1a68b4230744d87e1;hb=26d172a9fb38101f3cc64eed8f2366309d55b9d2;hp=b691fd0669da6ed0504868939722cea1eb88e064;hpb=dad4504d0e1c23bcd1de18eaa5d6615a228f9658;p=tt.git diff --git a/tt.rkt b/tt.rkt index b691fd0..be88095 100644 --- a/tt.rkt +++ b/tt.rkt @@ -34,6 +34,9 @@ ; - d | download ; - u | upload ; - calls user-configured command to upload user's own feed file to their server +; +; Looks like a better CLI parser than "racket/cmdline": +; https://docs.racket-lang.org/natural-cli/ #lang racket @@ -213,11 +216,9 @@ "https://raw.githubusercontent.com/mdom/we-are-twtxt/master/we-are-twtxt.txt") (str->feeds (uri-fetch uri))) -(define user-agent +(define (user-agent prog-name prog-version) (let* - ([prog-name "tt"] - [prog-version "0.3.4"] - [prog-uri "https://github.com/xandkar/tt"] + ([prog-uri "https://github.com/xandkar/tt"] [user-feed-file (expand-user-path "~/twtxt-me.txt")] [user (if (file-exists? user-feed-file) @@ -228,30 +229,33 @@ (format "~a/~a (~a)" prog-name prog-version user))) (module+ main - (define (setup-logging) - (define logger (make-logger #f #f 'debug #f)) - (define log-chan (make-log-receiver logger 'debug)) + (require setup/getinfo) + + (let* ([logger (make-logger #f #f 'debug #f)] + [log-receiver (make-log-receiver logger 'debug)]) (void (thread (λ () [date-display-format 'iso-8601] [let loop () - (define data (sync log-chan)) + (define data (sync log-receiver)) (define level (vector-ref data 0)) (define msg (vector-ref data 1)) (define ts (date->string (current-date) #t)) (eprintf "~a [~a] ~a~n" ts level msg) (loop)]))) (current-logger logger)) - - (setup-logging) (current-http-response-auto #f) - (current-http-user-agent user-agent) + (let* ([prog-name "tt"] + [prog-version ((get-info (list prog-name)) 'version)] + [user-agent (user-agent prog-name prog-version)]) + (current-http-user-agent user-agent)) (date-display-format 'rfc2822) - - (define args (current-command-line-arguments)) - (define feeds - (if (vector-empty? args) - (we-are-twtxt) - (file->feeds (vector-ref args 0)))) - (define out-format 'multi-line) - (define num_workers 15) ; 15 was fastest out of the tried 1, 5, 10, 15 and 20. - (timeline-print out-format (timeline num_workers feeds))) + (let ([feeds + (let ([args (current-command-line-arguments)]) + (if (= 0 (vector-length args)) + (we-are-twtxt) + (file->feeds (vector-ref args 0))))] + [out-format + 'multi-line] + [num_workers + 15]) ; 15 was fastest out of the tried 1, 5, 10, 15 and 20. + (timeline-print out-format (timeline num_workers feeds))))