Library
Module
Module type
Parameter
Class
Class type
Environment variables.
var name
is the value of the environment variable name
, if defined.
val set_var : string -> string option -> (unit, 'e) result
set_var name v
sets the environment variable name
to v
.
BUG. The Unix
module doesn't bind to unsetenv(3)
, hence for now using None
will not unset the variable, it will set it to ""
. This behaviour may change in future versions of the library.
opt_var name absent
is the value of the optionally defined environment variable name
if defined and absent
if undefined.
val req_var : string -> (string, 'e) result
req_var name
is the value of the environment variable name
or an error if name
is undefined in the environment.
See the examples.
The type for environment variable value parsers.
val parser : string -> (string -> 'a option) -> 'a parser
parser kind k_of_string
is an environment variable value from the k_of_string
function. kind
is used for error reports (e.g. could be "int"
for an int
parser).
val bool : bool parser
bool s
is a boolean parser. The string is lowercased and the result is:
Ok false
if it is one of ""
, "false"
, "no"
, "n"
or "0"
.Ok true
if it is one of "true"
, "yes"
, "y"
or "1"
.Error
otherwise.val string : string parser
string s
is a string parser, it always succeeds.
val path : Fpath.t parser
path s
is a path parser using Fpath.of_string
.
parse name p ~absent
is:
Ok absent
if Env.var name = None
Ok v
if Env.var name = Some s
and p s = Ok v
Error (`Msg m)
otherwise with m
an error message that mentions name
and the parse error of p
.val value : ?log:Logs.level -> string -> 'a parser -> absent:'a -> 'a
value ~log name p ~absent
is like parse
but in case of error the message is logged with level log
(defaults to Logs.level.Error
) and ~absent
is returned.
let debug : bool = OS.Env.(value "DEBUG" bool ~absent:false)
let msg : string = OS.Env.(value "MSG" string ~absent:"no message")
let timeout : int option =
let int = OS.Env.(some @@ parser "int" String.to_int) in
OS.Env.value "TIMEOUT" int ~absent:None