Devices.Key
Command-line arguments for the Mirage configuration tool.
include module type of Functoria.Key
module Arg = Functoria.Key.Arg
type 'a key = 'a Functoria.Key.key
The type for configuration keys. Keys are used to parameterize the choice of module implementation.
create n a
is the key named n
whose contents is determined by parsing the command-line argument a
.
type +'a value = 'a Functoria.Key.value
The type for configure-time and run-time values. Values are either pure
or obtained by composing other values. Values might have data dependencies, which form an (implicit) directed and acyclic graph that need to be evaluated.
val pure : 'a -> 'a value
pure x
is a value without any dependency.
f $ v
is is the value resulting from the application of f
'value to v
's value. $
is the usual app operator for applicative functor.
val default : 'a value -> 'a
default v
returns the default value for v
.
type t = Functoria.Key.t
The type for abstract keys.
val name : t -> string
name t
is the string given as t
's name when t
was created.
val pp : t Fmt.t
pp fmt k
prints the name of k
.
module Set = Functoria.Key.Set
Set
implements sets over t
elements.
val pp_deps : 'a value Fmt.t
pp_deps fmt v
prints the name of the dependencies of v
.
type context := Functoria.Context.t
The type for values holding parsing context.
context ks
is a Cmdliner
term that evaluates into a parsing context for command-line arguments.
mem c v
is true
iff all the dependencies of v
have been evaluated.
eval c v
evaluates v
in c
's context, using default values if necessary.
get c k
is k
's value in c
's context. If k
is not present in c
, it is k
's default value.
find c k
is k
's value in c
's context or None
if k
is not present in c
.
-t TARGET
: Key setting the configuration mode for the current project. Is one of "unix"
, "macosx"
, "xen"
, "qubes"
, "virtio"
, "hvt"
, "muen"
, "genode"
or "spt"
.
val pp_target : mode Fmt.t
Pretty printer for the mode.
Some keys have a group
optional argument. This group argument allows to give several keys a prefix.
For example, if we have two ip
stacks, one external and one internal, We can use the group
option to name them in
and out
. This way, the available keys will be --in-ip
and --out-ip
.
If a key has another, non-optional argument. It is the default value.
Keys are always named the same as their command line option.
val kv_ro : ?group:string -> unit -> [ `Crunch | `Direct ] key
The type of key value store. Is one of "crunch"
, or "direct"
.
val block :
?group:string ->
unit ->
[ `XenstoreId | `BlockFile | `Ramdisk ] key
Block device keys
val dhcp : ?group:string -> unit -> bool key
Enable dhcp. Is either true
or false
.
val net : ?group:string -> unit -> [ `OCaml | `Host ] option key
The type of stack. Is either "ocaml"
or "host"
.