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