open Cmdliner let tag_arg = let doc = "Search entries for a given tag." in Arg.(value & opt string "" & info [ "t"; "tag" ] ~docv:"TAG" ~doc) let headlines_t = Term.(const Stitch.start $ tag_arg $ const ()) let envs = let docs = "ENVIRONMENT VARIABLES" in [ Cmd.Env.info ~docs ~doc: "Directory where Stitch should search for notes. Needs to be set in order for \ the program to work. Must be absolute path, I.E /home/bob/notes" "STITCH_DIRECTORY" ; Cmd.Env.info ~docs ~doc: "Grep command to use (defaults to \"grep\"). Stitch also works well with ugrep, \ which greatly speeds up the program." "STITCH_GREP_CMD" ; Cmd.Env.info ~docs ~doc:"Pattern to use for headlines. (Default \"* \")" "STITCH_HEADLINE_PATTERN" ; Cmd.Env.info ~docs ~doc: "Pattern to use by grep to fetch headlines. Needs to be double escaped for \ OCaml. (Default \"^\\* \")" "STITCH_HEADLINE_PATTERN_REGEXP" ; Cmd.Env.info ~docs ~doc:"Pattern used by grep to find tags. (Default \":[a-z-]+:\", matches :a-tag:" "STITCH_TAG_PATTERN" ; Cmd.Env.info ~docs ~doc:"Pattern for TODOS. Used for substitution. (Default \"* TODO\")" "STITCH_TODO" ; Cmd.Env.info ~docs ~doc: "Regexp used by grep to find TODO items. Needs to be double escaped for OCaml. \ (Default \"^\\* TODO\")" "STITCH_TODO_REGEXP" ; Cmd.Env.info ~docs ~doc:"Pattern for DONE items. Used for substitution. (Default \"* DONE\")" "STITCH_DONE" ; Cmd.Env.info ~docs ~doc: "Regexp used by grep to find DONE items. Needs to be double escaped for OCaml. \ (Default \"^\\* DONE\")" "STITCH_DONE_REGEXP" ] let headlines_cmd = let doc = "Show titles in a condensed list" in let man = [ `S Manpage.s_bugs; `P "Email bug reports to marc@mccd.space" ] in let info = Cmd.info ~envs "headlines" ~version:"0.1" ~doc ~man in Cmd.v info headlines_t let () = exit (Cmd.eval headlines_cmd)