sig
  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;
  }
  val create :
    ?info_file:string ->
    ?env_file:string ->
    ?stdout_file:string ->
    ?stderr_file:string ->
    ?env:string array ->
    ?metadata:(string * string) list ->
    verbose:bool -> string -> string list -> OpamProcess.t
  type result = {
    r_code : int;
    r_duration : float;
    r_info : (string * string) list;
    r_stdout : string list;
    r_stderr : string list;
    r_cleanup : string list;
  }
  val wait : OpamProcess.t -> OpamProcess.result
  val run :
    ?env:string array ->
    ?verbose:bool ->
    ?name:string ->
    ?metadata:(string * string) list ->
    string -> string list -> OpamProcess.result
  val is_success : OpamProcess.result -> bool
  val is_failure : OpamProcess.result -> bool
  val clean_files : OpamProcess.result -> unit
  val read_lines : string -> string list
  val string_of_result :
    ?color:OpamGlobals.text_style -> OpamProcess.result -> string
end