# Module BaseEnv

    module BaseEnv: sig .. end

Read-write access to 'setup.data'

- Author(s): Sylvain Le Gall

    type origin_t =

`|` | `ODefault` | `(*` | Default computed value. | `*)`
`|` | `OGetEnv` | `(*` | Extracted from environment, using Sys.getenv. | `*)`
`|` | `OFileLoad` | `(*` | From loading file setup.data. | `*)`
`|` | `OCommandLine` | `(*` | Set on command line. | `*)`

Origin of the variable, if a variable has been already set with a higher origin, it won't be set again.

    type cli_handle_t =

`|` | `CLINone` | `(*` | No command line argument. | `*)`
`|` | `CLIAuto` | `(*` | Build using variable name and help text. | `*)`
`|` | `CLIWith` | `(*` | Use prefix --with-. | `*)`
`|` | `CLIEnable` | `(*` | Use --enable/--disable. | `*)`
`|` | `CLIUser of `(Stdlib.Arg.key * Stdlib.Arg.spec * Stdlib.Arg.doc) list`` | `(*` | Fully define the command line arguments. | `*)`

Command line handling for variable.

    type definition_t = {

`` | `hide : `bool`;` | `(*` | Hide the variable. | `*)`
`` | `dump : `bool`;` | `(*` | Dump the variable. | `*)`
`` | `cli : `cli_handle_t`;` | `(*` | Command line handling for the variable. | `*)`
`` | `arg_help : `string option`;` | `(*` | Help about the variable. | `*)`
`` | `group : `OASISTypes.name option`;` | `(*` | Group of the variable. | `*)`

`}`

Variable type.

    val schema : (origin_t, definition_t) PropList.Schema.t

Schema for environment.

    val env : PropList.Data.t

Data for environment.

    val var_expand : string -> string

Expand variable that can be found in string. Variable follow definition of variable for `Buffer.add_substitute`.

    val var_get : OASISTypes.name -> string

Get variable.

    val var_choose : ?printer:('a -> string) -> ?name:string -> 'a OASISExpr.choices -> 'a

Choose a value among conditional expressions.

    val var_protect : string -> string

Protect a variable content, to avoid expansion.

    val var_define : ?hide:bool ->
           ?dump:bool ->
           ?short_desc:(unit -> string) ->
           ?cli:cli_handle_t ->
           ?arg_help:string ->
           ?group:string -> OASISTypes.name -> (unit -> string) -> unit -> string

Define a variable.

    val var_redefine : ?hide:bool ->
           ?dump:bool ->
           ?short_desc:(unit -> string) ->
           ?cli:cli_handle_t ->
           ?arg_help:string ->
           ?group:string -> OASISTypes.name -> (unit -> string) -> unit -> string

Define a variable or redefine it.

    val var_ignore : (unit -> string) -> unit

Well-typed ignore for `var_define`.

    val print_hidden : unit -> string

Display all variables, even hidden one.

    val var_all : unit -> OASISTypes.name list

Get all variables.

    val default_filename : OASISContext.source_filename

Environment default file.

    val load : ctxt:OASISContext.t ->
           ?allow_empty:bool -> ?filename:OASISContext.source_filename -> unit -> unit

Initialize environment.

    val unload : unit -> unit

Uninitialize environment.

    val dump : ctxt:OASISContext.t -> ?filename:OASISContext.source_filename -> unit -> unit

Save environment on disk.

    val print : unit -> unit

Display environment to user.

    val args : unit -> (Stdlib.Arg.key * Stdlib.Arg.spec * Stdlib.Arg.doc) list

Default command line arguments, computed using variable definitions.