View Source Dotenv Config
Erlang/Elixir apps config based on environment variables and .env files
Usage
At the start of your application, load the .env files (later files will overwrite the previous ones values).
dotenv_config:init(parser_module, ["path/to/.env"]).
parser_module
is a module that implements the dotenv_config_parser
behaviour. It should have a get_parser/0
function that returns a list of
{ConfigItemName, ConfigItemType}
tuples. See the parser_module
example below.
Get the config value:
dotenv_config:get(<<"CLIENT_ID">>).
Set the config value:
dotenv_config:set(<<"CLIENT_ID">>, <<"new_client_id">>).
Get all the config values:
dotenv_config:get_all().
parser_module
example
-module(client_config_example).
-behaviour(dotenv_config_parser).
-export([get_parser/0]).
get_parser() ->
[
{<<"CLIENT_ID">>, str},
{<<"PORT">>, int},
{<<"DEBUG">>, bool},
{<<"NAMES">>, json},
{<<"LOG_LEVEL">>, atom},
{<<"CALLBACK_MODULE">>, module},
{<<"CHARLIST">>, charlist},
{<<"SOME_LIST_MODE">>, [{exact, <<"allowlist">>}, {exact, <<"blocklist">>}]},
{<<"SOME_CALL_TIMEOUT">>, [{exact, <<"infinity">>}, int]},
{<<"SOME_COMPLEX_TYPE">>, fun (RawValue) -> <<RawValue/binary, "_42">> end}
].
json
type would be parsed to list or map using jiffy:decode(RawValue, [return_maps]).
module
type would be checked for existence.