Module OpamProcess
Process and job handling, with logs, termination status, etc.
val command : ?env:string array -> ?verbose:bool -> ?name:string -> ?metadata:(string * string) list -> ?dir:string -> ?allow_stdin:bool -> ?stdout:string -> ?text:string -> string -> string list -> command
Builds a shell command for later execution.
- parameter env
environment for the command
- parameter verbose
force verbosity
- parameter name
title, used to name log files, etc.
- parameter metadata
additional info to log
- parameter dir
CWD for the command
- parameter allow_stdin
whether to forward stdin
- parameter stdout
redirect stdout to the given file instead of the logs
- parameter text
Short text that may be displayed in the status-line
- parameter command
The command itself
- parameter args
Command-line arguments
val string_of_command : command -> string
val text_of_command : command -> string option
val is_verbose_command : command -> bool
val make_command_text : ?color:OpamConsole.text_style -> string -> ?args:string list -> string -> string
Returns a label suitable for printing the summary of running commands. First string is the topic (e.g. package), second the action (e.g. command name). Optional command arguments may be used for details (e.g. make action).
type t
=
{
}
The type for processes
type result
=
{
}
Process results
val run : command -> result
run command
synchronously call the commandcommand.cmd
with argumentscommand.args
. It waits until the process is finished. The filesname.info
,name.env
,name.out
andname.err
, withname = command.cmd_name
are created, and contain the process main description, the environment variables, the standard output and the standard error. Don't forget to callcleanup result
afterwards
val run_background : command -> t
Same as
run
, but doesn't wait. Use wait_one to wait and collect results; Don't forget to callcleanup result
afterwards
val dry_run_background : command -> t
Similar to
run_background
, except that no process is created, and a dummy process (suitable for dry_wait_one) is returned.
val wait : t -> result
wait p
waits for the processusp
to end and returns its results. Be careful to handle Sys.Break
val dontwait : t -> result option
Like
wait
, but returns None immediately if the process hasn't ended
val wait_one : t list -> t * result
Wait for the first of the listed processes to terminate, and return its termination status
val dry_wait_one : t list -> t * result
Similar to
wait_one
for simulations, to be used withdry_run_background
val interrupt : t -> unit
Send SIGINT to a process (or SIGKILL on Windows)
val is_success : result -> bool
Is the process result a success?
val is_failure : result -> bool
Is the process result a failure?
val cleanup : ?force:bool -> result -> unit
Should be called after process termination, to cleanup temporary files. Leaves artefacts in case OpamGlobals.debug is on and on failure, unless force has been set.
val check_success_and_cleanup : result -> bool
Like
is_success
, with an added cleanup side-effect (ascleanup ~force:true
). Use this when not returning 0 is not an error case: since the default behaviour is to cleanup only when the command returned 0, which is not what is expected in that case.
Misc
val string_of_result : ?color:OpamConsole.text_style -> result -> string
Detailed report on process outcome
val result_summary : result -> string
Short report on process outcome
module Job : sig ... end
Higher-level interface to allow parallelism
type 'a job
= 'a Job.Op.job