S is the signature that application builders have to provide.

val prelude : Info.t -> string

Prelude printed at the beginning of main.ml.

It should put in scope:

  • a run function of type 'a t -> 'a
  • a return function of type 'a -> 'a t
  • a >>= operator of type 'a t -> ('a -> 'b t) -> 'b t
val packages : Package.t list

The packages to load when compiling the configuration file.

val name : string

Name of the custom DSL.

val version : string

Version of the custom DSL.

val create : DSL.job DSL.impl list -> DSL.job DSL.impl

create jobs is the top-level job in the custom DSL which will execute the given list of job.

val name_of_target : Info.t -> string

name_of_target i is the name used to build the project with the build info i. For simple projects it can be Info.name. For more complex projects (like mirage), the name is suffixed by the value of the target key defined in i.

val dune_project : Dune.stanza list
val dune_workspace : (?build_dir:Fpath.t -> DSL.info -> Dune.t) option
val context_name : Info.t -> string