`sig type command val command : ?env:string array -> ?verbose:bool -> ?name:string -> ?metadata:(string * string) list -> ?dir:string -> ?allow_stdin:bool -> ?text:string -> string -> string list -> OpamProcess.command val string_of_command : OpamProcess.command -> string val text_of_command : OpamProcess.command -> string option val is_verbose_command : OpamProcess.command -> bool val make_command_text : ?color:OpamGlobals.text_style -> string -> ?args:string list -> string -> string type t = { p_name : string; p_args : string list; p_pid : int; p_cwd : string; p_time : float; p_stdout : string option; p_stderr : string option; p_env : string option; p_info : string option; p_metadata : (string * string) list; p_verbose : bool; } type result = { r_code : int; r_signal : int option; r_duration : float; r_info : (string * string) list; r_stdout : string list; r_stderr : string list; r_cleanup : string list; } val run : OpamProcess.command -> OpamProcess.result val run_background : OpamProcess.command -> OpamProcess.t val dry_run_background : OpamProcess.command -> OpamProcess.t val wait : OpamProcess.t -> OpamProcess.result val dontwait : OpamProcess.t -> OpamProcess.result option val wait_one : OpamProcess.t list -> OpamProcess.t * OpamProcess.result val dry_wait_one : OpamProcess.t list -> OpamProcess.t * OpamProcess.result val interrupt : OpamProcess.t -> unit val is_success : OpamProcess.result -> bool val is_failure : OpamProcess.result -> bool val cleanup : ?force:bool -> OpamProcess.result -> unit val read_lines : string -> string list val string_of_result : ?color:OpamGlobals.text_style -> OpamProcess.result -> string module Job : sig module Op : sig type 'a job = Done of 'a | Run of OpamProcess.command * (OpamProcess.result -> 'a OpamProcess.Job.Op.job) val ( @@> ) : OpamProcess.command -> (OpamProcess.result -> 'a OpamProcess.Job.Op.job) -> 'a OpamProcess.Job.Op.job val ( @@+ ) : 'a OpamProcess.Job.Op.job -> ('a -> 'b OpamProcess.Job.Op.job) -> 'b OpamProcess.Job.Op.job val ( @@| ) : 'a OpamProcess.Job.Op.job -> ('a -> 'b) -> 'b OpamProcess.Job.Op.job end val run : 'a OpamProcess.Job.Op.job -> 'a val dry_run : 'a OpamProcess.Job.Op.job -> 'a val catch : (exn -> 'a OpamProcess.Job.Op.job) -> 'a OpamProcess.Job.Op.job -> 'a OpamProcess.Job.Op.job val ignore_errors : default:'a -> ?message:string -> 'a OpamProcess.Job.Op.job -> 'a OpamProcess.Job.Op.job val finally : (unit -> unit) -> 'a OpamProcess.Job.Op.job -> 'a OpamProcess.Job.Op.job val of_list : ?keep_going:bool -> OpamProcess.command list -> (OpamProcess.command * OpamProcess.result) option OpamProcess.Job.Op.job val with_text : string -> 'a OpamProcess.Job.Op.job -> 'a OpamProcess.Job.Op.job end type 'a job = 'a OpamProcess.Job.Op.job end`