open Logarion let last a ((t,_) as pair) = match a with | None -> Some pair | Some (t', _) as pair' -> if Text.newest t t' > 0 then Some pair else pair' let last_mine a ((t, _) as pair) = let name = Person.Set.of_string (Sys.getenv "USER") in let open Text in match a with | None -> if Person.Set.subset name t.authors then Some pair else None | Some (t', _) as pair' -> if Text.newest t t' > 0 && Person.Set.subset name t'.authors then Some pair else pair' let last search_mine = let filter = if search_mine then last_mine else last in match File_store.fold filter None with | None -> () | Some (_, f) -> List.iter print_endline f open Cmdliner let term = let mine = Arg.(value & flag & info ["mine"] ~doc:"last text authored by me") in Term.(const last $ mine), Term.info "last" ~doc:"most recent text" ~man:[ `S "DESCRIPTION"; `P "Print the filename of most recent text" ]