Module B0_driver

B0 file drivers.

B0 file drivers access the definitions of B0 files. See this manual for an overview and a minimal example.

Commonalities

module Exit : sig ... end

Driver exit codes.

module Env : sig ... end

Driver environment variables.

module Conf : sig ... end

Driver configuration.

module Cli : sig ... end

Cli interaction.

Drivers

type main = unit -> (B0_std.Os.Exit.t Cmdliner.Cmd.eval_ok, Cmdliner.Cmd.eval_error) Stdlib.result

The type for driver main functions. A function that returns a Cmdliner evaluation result. This evaluation result is used by run to handle program termination. Note that the driver may exit prematurely with Exit.b0_file_error if there's a fatal error in the B0 file.

type t

The type for drivers.

val make : name:string -> version:string -> libs:B0_ocaml.Libname.t list -> t

make ~name ~version is a new driver named name which has version version and uses library libs to link the B0 file. Note that these libraries are not added during the compilation phase.

Note. The b0 libraries are automatically added to libs there's no need to mention them. Just mention your driver library and its dependencies in order.

val name : t -> string

name d is the name of d.

val version : t -> string

version d is the version of d.

val libs : t -> B0_ocaml.Libname.t list

libs d are the libraries that need to be added for linking.

val set : driver:t -> main:main -> unit

set d sets the driver to d and its main function to main. Use run to run the driver.

val run : has_b0_file:bool -> unit

run ~has_b0_file runs the driver set by set. has_b0_file must be true if the B0 file is linked in, this is typically done by the B0 file expanded source invocation. Raises Invalid_argument if no driver is set.

Require the B0 file

val with_b0_file : driver:t -> (Conf.t -> B0_std.Os.Exit.t) Cmdliner.Term.t -> B0_std.Os.Exit.t Cmdliner.Term.t

with_b0_file ~driver cmd wraps cmd to make sure it runs with the B0 file compiled and linked in as specified by driver.

val with_b0_file_if_any : driver:t -> (Conf.t -> B0_std.Os.Exit.t) Cmdliner.Term.t -> B0_std.Os.Exit.t Cmdliner.Term.t

with_b0_file_if_any ~driver cmd is like with_b0_file however it doesn't error if the B0 file does not exist or if it fails to compile (a warning is generated in this case). The driver code can use B0_driver.has_b0_file to see if one is linked and B0_driver.has_failed_b0_file to check if there was an error in linking it.

val has_b0_file : unit -> bool

has_b0_file () is true if run is called with has_b0_file.

val has_failed_b0_file : unit -> bool

has_failed_b0_file () is true for with_b0_file_if_any when there is a B0 file but it file to compile.

Compilation

module Compile : sig ... end

Driver compilation.