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 -> 'OpamProcess.Job.Op.job)           val ( @@> ) :             OpamProcess.command ->             (OpamProcess.result -> 'OpamProcess.Job.Op.job) ->             'OpamProcess.Job.Op.job           val ( @@+ ) :             'OpamProcess.Job.Op.job ->             ('-> 'OpamProcess.Job.Op.job) -> 'OpamProcess.Job.Op.job           val ( @@| ) :             'OpamProcess.Job.Op.job ->             ('-> 'b) -> 'OpamProcess.Job.Op.job         end       val run : 'OpamProcess.Job.Op.job -> 'a       val dry_run : 'OpamProcess.Job.Op.job -> 'a       val catch :         (exn -> 'OpamProcess.Job.Op.job) ->         'OpamProcess.Job.Op.job -> 'OpamProcess.Job.Op.job       val ignore_errors :         default:'->         ?message:string ->         'OpamProcess.Job.Op.job -> 'OpamProcess.Job.Op.job       val finally :         (unit -> unit) ->         'OpamProcess.Job.Op.job -> '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 -> 'OpamProcess.Job.Op.job -> 'OpamProcess.Job.Op.job     end   type 'a job = 'OpamProcess.Job.Op.job end