package feather

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type cmd
val process : Base.string -> Base.string Base.list -> cmd

process constructs a new command

val (|.) : cmd -> cmd -> cmd

|. is feather's version of a "|" in bash.

val ls : Base.string -> cmd
val find : ?include_starting_dir:Base.bool -> ?ignore_hidden:Base.bool -> ?kind:[ `Files | `Directories ] -> ?name:Base.string -> ?depth:Base.int -> Base.string -> cmd

find lists files and/or directories, optionally filtering by name.

?depth: The maximum search depth, defaults to infinity.

?include_starting_dir: whether to include the starting directory passed into find. Defaults to false, notably different than the unix find utility.

val sh : Base.string -> cmd
val rg : ?in_:Base.string -> Base.string -> cmd

in_ is the directory that should be rg'd: rg <search> <in>. Without it, it'll filter stdin, just rg <search>

val rg_v : ?in_:Base.string -> Base.string -> cmd
val grep : ?in_:Base.string -> Base.string -> cmd
val cat : Base.string -> cmd
val less : cmd
val mkdir : Base.string -> cmd
val mkdir_p : Base.string -> cmd
val sort : cmd
val uniq : cmd
val shuf : cmd
val head : ?file:Base.string -> Base.int -> cmd
val tail : ?file:Base.string -> Base.int -> cmd
val tail_f : Base.string -> cmd
val echo : Base.string -> cmd
val cut' : ?complement:Base.unit -> ?d:Base.char -> Base.int Base.list -> cmd
val cut : ?d:Base.char -> Base.int -> cmd
val cp : Base.string -> Base.string -> cmd
val cp_r : Base.string -> Base.string -> cmd
val mv : Base.string -> Base.string -> cmd
val pwd : cmd
val sed : ?g:Base.bool -> Base.string -> Base.string -> cmd
val tr : Base.string -> Base.string -> cmd
val tr_d : Base.string -> cmd
val and_ : cmd -> cmd -> cmd

and_ is feather's version of a "&&" in bash. See Infix module for more.

val or_ : cmd -> cmd -> cmd

or_ is feather's version of a "||" in bash. See Infix module for more.

val sequence : cmd -> cmd -> cmd

sequence is feather's version of a ";" in bash. See Infix module for more.

val collect_stdout : ?cwd:Base.string -> ?env:(Base.string * Base.string) Base.list -> cmd -> Base.string
val collect_lines : ?cwd:Base.string -> ?env:(Base.string * Base.string) Base.list -> cmd -> Base.string Base.list
val map_lines : f:(Base.string -> Base.string) -> cmd
val filter_lines : f:(Base.string -> Base.bool) -> cmd

map within a series of pipes will be run in a thread.

val run : ?cwd:Base.string -> ?env:(Base.string * Base.string) Base.list -> cmd -> Base.unit
val run_bg : ?cwd:Base.string -> ?env:(Base.string * Base.string) Base.list -> cmd -> Base.unit

Run the process in a thread. Use wait to ensure that the parent won't exit, subsequently killing the background process.

val write_stdout_to : Base.string -> cmd -> cmd
val append_stdout_to : Base.string -> cmd -> cmd
val write_stderr_to : Base.string -> cmd -> cmd
val append_stderr_to : Base.string -> cmd -> cmd
val read_stdin_from : Base.string -> cmd -> cmd
module Infix : sig ... end
val stdout_to_stderr : cmd -> cmd
val stderr_to_stdout : cmd -> cmd

stdout_to_stderr and stderr_to_stdout are NOT composable! Think of these functions as each creating a new command with the given redirection.

Applying both will result in no output to either stdout or stderr. flip_stdout_and_stderr should be easy to write if anyone should need it.

val last_exit : Base.unit -> Base.int

last_exit returns the exit status of the last child process to have exited

val devnull : Base.string

devnull is easier to type than "/dev/null"

val fzf : ?cwd:Base.string -> ?env:(Base.string * Base.string) Base.list -> cmd -> Base.string Base.option

fzf runs the command, and fuzzy finds the stdout. Returns None if no item was chosen, Some str otherwise

Note that fzf is a way to to run a cmd and does not in itself return a cmd.

val debug : Base.bool Base.ref
OCaml

Innovation. Community. Security.