open Logarion let last search_mine = 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' in 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' in match File_store.fold (if search_mine then last_mine else last) None with | Some (_,f) -> List.iter print_endline f | None -> () 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" ]