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