In-progress
-----------
+- [-] timeline limits
+ - [x] by time range
+ - [ ] by msg count
+ - [ ] per peer
+ - [ ] total
+ Not necessary for short format, because we have Unix head/tail,
+ but may be convinient for long format (because msg spans multiple lines).
- [-] Convert to Typed Racket
- [x] build executable (otherwise too-slow)
- [-] add signatures
Backlog
-------
+- [ ] Support date without time in timestamps
- [ ] Crawl all cache/objects/*, not given peers.
BUT, in order to build A-mentioned-B graph, we need to know the nick
associated with the URI whos object we're examining. How to do that?
- [ ] download times per peer
- [ ] Support redirects
- should permanent redirects update the peer ref somehow?
-- [ ] Support time ranges (i.e. reading the timeline between given time points)
- [ ] optional text wrap
- [ ] write
-- [ ] timeline limits
- [ ] peer refs set operations (perhaps better done externally?)
- [ ] timeline as a result of a query (peer ref set op + filter expressions)
- [ ] config files
Done
----
+- [x] Support time ranges (i.e. reading the timeline between given time points)
- [x] Dedup read-in peers before using them.
- [x] Prevent redundant downloads
- [x] Check ETag
(exit 1)))]
[(or "r" "read")
(let ([out-format 'multi-line]
- [order 'old->new])
+ [order 'old->new]
+ [ts-min #f]
+ [ts-max #f])
(command-line
#:program
"tt read"
[("-r" "--rev")
"Reverse displayed timeline order."
(set! order 'new->old)]
+ [("-m" "--min")
+ m "Earliest time to display (ignore anything before it)."
+ (set! ts-min (rfc3339->epoch m))]
+ [("-x" "--max")
+ x "Latest time to display (ignore anything after it)."
+ (set! ts-max (rfc3339->epoch x))]
#:once-any
[("-s" "--short")
"Short output format"
(let* ([peers
(paths->peers file-paths)]
[timeline
- (timeline-sort (peers->timeline peers) order)])
+ (timeline-sort (peers->timeline peers) order)]
+ [timeline
+ (filter (λ (m) (and (if ts-min (>= (Msg-ts-epoch m)
+ ts-min)
+ #t)
+ (if ts-max (<= (Msg-ts-epoch m)
+ ts-max)
+ #t)))
+ timeline)])
(timeline-print out-format timeline))))]
[(or "c" "crawl")
(command-line