Module OS.Cmd

Running commands.

Command existence

val exists : Cmd.t -> bool result

exists cmd is true if the executable of cmd can be found in the path and false otherwise.

val must_exist : Cmd.t -> Cmd.t result

must_exist cmd is cmd if the executable of cmd can be found in the path and an error otherwise.

Running commands

val run : ?err:fpath -> Cmd.t -> unit result

run cmd runs the command cmd. std{i,o,err} are connected to the invoking process' standard channels. If err is specified stderr is redirected to the given file (e.g. File.null).

val run_status : ?err:fpath -> Cmd.t -> [ `Exited of int ] result

run_status cmd is like run, but doesn't error on non-zero exit status.

Capturing standard output

type run_status = Cmd.t * [ `Exited of int ]

The type for run statuses, the command that was run and the run status.

val success : ('a * run_status) result -> 'a result

success r is:

  • Ok v if r = Ok (v, (_, `Exited 0))
  • Error _ otherwise. Non `Exited 0 statuses are turned into an error message.
type run_out

The type for representing the standard output of a command run.

val out_string : ?trim:bool -> run_out -> (string * run_status) result

out_string ~trim o captures the standard output o as a string. If trim is true (default) the result is passed through String.trim.

val out_lines : ?trim:bool -> run_out -> (string list * run_status) result

out_lines ~trim is like out_string but the result is cut on newlines ('\n').

val out_file : fpath -> run_out -> (unit * run_status) result

out_file f o writes the standard output o to file f.

val out_stdout : run_out -> (unit * run_status) result

out_stdout o redirects the standard output o to the current process standard output.

val to_string : ?trim:bool -> run_out -> string result

to_string is (out_string ?trim o |> success).

val to_lines : ?trim:bool -> run_out -> string list result

to_lines ?trim o is (out_string ?trim o |> success).

val to_file : fpath -> run_out -> unit result

to_file f o is (out_file f o |> success)

val run_out : ?err:fpath -> Cmd.t -> run_out

run_out cmd represents the standard output of the command run cmd. std{i,err} are connected to the invoking prcoess stream and standard output can be consumed with to_string, to_lines or to_file. If err is specified stderr is redirected to the given file.