e878dedbb6
Format - New B32 ID Index - New option: txt index --print - Move scheme to peers - Replace peer.*.conf files with index packed locations Instead of adding a URL to peers.*.conf, run `txt pull <url>` Conversion - Rewritten converters - txt-convert looks for a .convert.conf containing `key: value` lines. - Specifiable topic-roots from .convert.conf. - Added `Topics:` key, with comma seperated topics. If set only those topics will appear in the main index and used as topic roots. Other topics will have sub-indices generated, but won't be listed in the main index. - HTML converter header & footer options - HTML-index renamed to HTM-index Internal - Change types: uuid:Uuid -> id:string - File_store merges identical texts - Use peer ID for store path, store peers' texts in .local/share/texts - Simple URN resolution for converter Continue to next feed if parsing one fails - Phasing-out Archive, replaced by improved packs - Eliminate Bos, Cohttp, lwt, uri, tls, Re, Ptime, dependencies - Lock version for Cmdliner, fix dune-project - Optional resursive store - Improve header_pack - Fix recursive mkdir
17 lines
749 B
OCaml
17 lines
749 B
OCaml
open Logarion
|
|
let topics r authors_opt =
|
|
let predicates = Archive.(predicate authored authors_opt) in
|
|
let predicate text = List.fold_left (fun a e -> a && e text) true predicates in
|
|
let topic_union a (e, _) = String_set.union a (Text.set "topics" e) in
|
|
let s = File_store.fold ~r ~predicate topic_union String_set.empty in
|
|
print_endline @@ String_set.to_string s
|
|
|
|
open Cmdliner
|
|
let term =
|
|
let recurse = Arg.(value & flag & info ["R"]
|
|
~doc:"include texts in subdirectories") in
|
|
let authed = Arg.(value & opt (some string) None & info ["authored"]
|
|
~docv:"comma-separated authors" ~doc:"topics by authors") in
|
|
Term.(const topics $ recurse $ authed),
|
|
Term.info "topics" ~doc:"list topics" ~man:[ `S "DESCRIPTION";
|
|
`P "List of topics" ]
|