77 lines
2.8 KiB
OCaml
77 lines
2.8 KiB
OCaml
|
|
(*
|
||
|
|
* Copyright (c) 2015 Gabriel Radanne <drupyog@zoho.com>
|
||
|
|
*
|
||
|
|
* Permission to use, copy, modify, and distribute this software for any
|
||
|
|
* purpose with or without fee is hereby granted, provided that the above
|
||
|
|
* copyright notice and this permission notice appear in all copies.
|
||
|
|
*
|
||
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
|
|
*)
|
||
|
|
|
||
|
|
(** Command-line arguments for the Mirage configuration tool. *)
|
||
|
|
|
||
|
|
include module type of Functoria.Key
|
||
|
|
|
||
|
|
type mode_unix = [ `Unix | `MacOSX ]
|
||
|
|
type mode_xen = [ `Xen | `Qubes ]
|
||
|
|
type mode_solo5 = [ `Hvt | `Spt | `Virtio | `Muen | `Genode ]
|
||
|
|
type mode_unikraft = [ `Firecracker | `QEMU ]
|
||
|
|
type mode = [ mode_unix | mode_xen | mode_solo5 | mode_unikraft ]
|
||
|
|
|
||
|
|
(** {2 Mirage keys} *)
|
||
|
|
|
||
|
|
val target : mode key
|
||
|
|
(** [-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. *)
|
||
|
|
|
||
|
|
val is_unix : bool value
|
||
|
|
(** Is true iff the {!target} key is a UNIXish system (["unix" or "macosx"]). *)
|
||
|
|
|
||
|
|
val is_solo5 : bool value
|
||
|
|
(** Is true iff the {!target} key is a Solo5-based target. *)
|
||
|
|
|
||
|
|
val is_xen : bool value
|
||
|
|
(** Is true iff the {!target} key is a Xen-based system (["xen" or "qubes"]). *)
|
||
|
|
|
||
|
|
val is_unikraft : bool value
|
||
|
|
(** Is true iff the {!target} key is a Unikraft-based target. *)
|
||
|
|
|
||
|
|
(** {2 Generic keys}
|
||
|
|
|
||
|
|
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. *)
|
||
|
|
|
||
|
|
(** {3 File system keys} *)
|
||
|
|
|
||
|
|
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
|
||
|
|
(** {3 Block device keys} *)
|
||
|
|
|
||
|
|
(** {3 Stack 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"]. *)
|